##### 'use strict'
use strict 是es5的一條指令。
- **嚴格模式下禁止使用with語句**
- **所有變量都要提前聲明**!
- **調用的函數的this值是undefined**,**而非嚴格模式下this指向window**
- **通過call和apply調用函數時,其中的this值就是傳入的第一個參數。(在非嚴格下,null和undefined值被全局對象和轉換為對象的非對象值所代替)**
- **給只讀屬性賦值或者給不可擴展的對象增加新屬性,都會拋出類型異常(在非嚴格下只是操作失敗,不會報錯)**
- **傳入eval的代碼不能聲明變量或函數**
- **函數里的arguments對象擁有傳入函數值的靜態副本。在非嚴格下,arguments對象具有“魔術般”的行為,arguments里的數組元素和函數參數都是指向同一個值的引用。**
- **當delete后跟隨非法的標識符(比如變量、函數、函數參數)時,會拋出語法錯誤異常,在非嚴格下,delete啥也沒做,并返回false**
- **試圖刪除一個不可配置的屬性將拋出一個類型異常錯誤(非嚴格下,delete啥也沒做,并返回false)**
- **一個對象中**,**定義相同的屬性名會拋出語法異常錯誤**
- **嚴格模式中不允許使用八進制整數直接量(以0為前綴,而不是0x為前綴)的**
- **標識符eval和arguments當做關鍵詞,他們的值是不能更改的,不能給這些標識符復制,更不能講他們聲明為變量、用作函數名、函數參數或者catch塊的標識符**
- **arguments.caller和arguments.callee都會拋出一個類型異常錯誤。嚴格模式的函數同樣具有caller和arguments屬性,當訪問這兩個屬性時將拋出類型異常錯誤**