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