严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,并增强安全性。这样的一个好处就是向上兼容,比如某个浏览器不支持这种模式的话就会被当成普通的字符串被忽略掉。
解读:
1.修复语言上的不足: 比如禁用with。大量使用with语句会导致性能下降,同时也会给调试代码造成困难。
- 提供更强的错误检查:比如重复的在字面量中写重复的属性名,或者删除一些不可配置的属性,或者尝试给没有申明的变量赋值而隐式的创建了全局变量,这里都有错误检查的机制。
3.安全性上,比如eval变成独立作用域,对动态执行代码的时候相对会比较安全。
进入严格模式的方式:
- 指定函数在严格模式下执行
function doSomething(){
"use strict";
//函数体
}
- 要在整个脚本中启用严格模式,可以在顶部添"use strict";
严格模式下
- 不允许用with
- 不允许未声明的变量被赋值
-
arguments变为参数的静态副本。对arguments赋值不会影响实际参数a的值。但如果传入的是一个对象,则还是会影响。
image.png - delete参数、函数名会报错。SyntaxError
-
delete不可配置的属性报错
image.png -
对象字面量重复属性名报错
image.png -
禁止八进制字面量
image.png - eval, arguments变为关键字,不能作为变量、函数名
-
eval变成独立作用域
image.png
网友评论