严格模式的作用
2020年1月30日
Strict mode finally debunked! Well, for me, at least.
严格模式可以“屏蔽”JavaScript 语言在使用中容易引起 bug 的功能,禁止出现不符合规范的代码,从而让 JS 的编译器更高效地运行。
- 变量被声明时必须被赋值。
 - 函数参数必须具有唯一名称(否则会被视为语法错误)
 - 禁止使用 
with。 - 只读属性被赋值时会报错。
 - 像 
00840这样的八进制数字报语法错误。 - 尝试 
delete不可删除的属性会引发语法错误。 delete prop会报错,delete global [prop]不会。eval不会将新变量引入其所在作用域。eval和参数不能被绑定或赋值。arguments不会跟踪方法参数的变更。arguments.callee引发 TypeError,不再支持。arguments.caller引发 TypeError,不再支持。- 方法被调用时作为
this传入方法的上下文不会变成对象。 - JavaScript 堆栈不能通过使用 
fn.caller和fn.arguments访问 。 - 保留字(例如 
protected、static、interface等)无法被赋值。