严格模式
严格模式的使用,全局使用则在全局环境下写入‘use strict’,块级作用域下使用也是可以的。将会按照严格模式执行。特色如下:
当然可以识别严格模式的只有在IE10++和Firefox+、Chrome13++、Safari5.1++、Opera12+
严格模式的特色:
- 未声明的变量会被报错(not defined),先声明再使用。
- 在函数内部声明是局部作用域 (只在函数内使用严格模式)不报错。
- 不允许删除变量或对象。(delete运算符一般也只能删除对象的属性,如果该对象没有用了,那么会被直接回收释放掉,这与内存的回放没有关系,也无法删除不可配置的对象属性。)
- 全局作用域下的函数,this关键字不再指向全局对象,而是undefined
- 不允许删除函数。
- 不允许变量重名
- 不允许使用八进制
- 不用使用转义字符
- 严禁使用with
- 不允许对只读属性赋值
- 不允许对一个使用getter方法读取的属性进行赋值
- 不允许删除一个不允许删除的属性
- 不允许删除eval字符串,(由于eval()的糟糕特性,从来不要使用就对了)
- 变量名不能使用 “arguments” 、"eval"字符串。(关键词不用管,正常的标准模式也不建议使用)
- 不允许使用以下with拓展作用域(常规也不建议使用,导致作用域混乱、不清)
- 由于一些安全原因,在作用域 eval() 创建的变量不能被调用,(都不建议使用eval(),忽略掉就可以了)
严格模式的优点
-
将过失错误转成异常
严格模式则把这些失误当成错误, 以便可以发现并立即将其改正.
-
为未来的ECMAScript版本铺平道路,可以更快的更新代码