js严格模式
1.什么是严格模式
它会以更严格的条件去检查你的代码错误,它可以全局使用,也可以局部使用(应用到函数内部)
- 严格模式通过抛出错误来消除了一些原有静默错误。
- 严格模式修复了一些导致 JavaScript 引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快。
- 严格模式禁用了在 ECMAScript 的未来版本中可能会定义的一些语法。
2.严格模式声明
"use strict" 指令只允许出现在脚本或函数的开头。
2.1 脚本严格模式
为整个脚本文件开启严格模式,需要在所有语句之前放一个特定语句 "use strict";
js
// 整个脚本都开启严格模式的语法
"use strict";
var v = "Hi! I'm a strict mode script!";
/...2.2 函数严格模式
把 "use strict";放在函数体所有语句之前。
js
function strict() {
'use strict';
// ...
}3.严格模式的限制
不允许使用未声明的变量。
不允许删除变量或对象。
不允许删除函数。
不允许变量重名。
不允许使用八进制。
不允许使用转义字符。
不允许对只读属性赋值。
不允许对一个使用getter方法读取的属性进行赋值。
不允许删除一个不允许删除的属性。
变量名不能使用 "eval" 字符串。
变量名不能使用 "arguments" 字符串。
不允许使用以下这种语句:
js
"use strict";
with (Math){x = cos(2)}; // 报错禁止this关键字指向全局对象。
4.保留关键字
为了向将来Javascript的新版本过渡,严格模式新增了一些保留关键字:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
