ES6 的模塊自動採用嚴格模式,不管你有沒有在模塊頭部加上"use strict";。
嚴格模式主要有以下限制。
- 變量必須聲明後再使用;
- 函數的參數不能有同名屬性,否則報錯;
- 不能使用with語句;
- 不能對只讀屬性賦值,否則報錯;
- 不能使用前綴0表示八進制數,否則報錯;
- 不能刪除不可刪除的屬性,否則報錯;
- 不能刪除變量delete prop,會報錯,只能刪除屬性delete global[prop];
- eval不會在它的外層作用域引入變量;
- eval和arguments不能被重新賦值;
- arguments不會自動反映函數參數的變化;
- 不能使用arguments.callee;
- 不能使用arguments.caller;
- 禁止this指向全局對象;
- 不能使用fn.caller和fn.arguments獲取函數調用的堆棧;
- 增加了保留字(比如protected、static和interface)。