严格模式的作用
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
等)无法被赋值。