最近在看React-Native的過(guò)程中看到了js的strict mode,查了些資料,看了些博客,記錄一下自己需要的內(nèi)容。
#### 開(kāi)啟方式
嚴(yán)格模式可以針對(duì)整個(gè)腳本文件,也可以只作用于其中的單個(gè)函數(shù),都使用`'use strict'`表示開(kāi)啟嚴(yán)格模式。
- 整個(gè)腳本文件
將`use strict`放在腳本文件的第一行即可,否則無(wú)效。
- 腳本文件中的單個(gè)函數(shù)
將`use strict`放在函數(shù)體的第一行即可。
PS:看到的一個(gè)小技巧,用匿名函數(shù)來(lái)開(kāi)啟嚴(yán)格模式在合并文件時(shí)會(huì)比較方便(雖然我從來(lái)都沒(méi)有用到過(guò)...)
```
(function(){
'use strict';
})();
```
### 需要注意的幾個(gè)與普通模式下的不同點(diǎn)
- 變量必須要先用var聲明,才能使用。
- 禁止使用`with`。
- `eval`中只能生成作用于其內(nèi)部的變量。
- 禁止`this`指向全局對(duì)象,使用構(gòu)造函數(shù)時(shí)一定要使用`new`
- 只有變量的`configurable`值為`true`時(shí),變量才能被刪除
- 對(duì)象的屬性,函數(shù)的參數(shù)重名會(huì)報(bào)錯(cuò)。
- 不可以使用八進(jìn)制表示
- 不允許在非函數(shù)的代碼塊內(nèi)聲明函數(shù)
- 新增保留字`implements` `interface` `let` `package` `private` `protected` `public` `static` `yield`