语法
ecmascript从5.0开始,有一个“特殊”的模式,叫做strict,在代码中或者函数内调用
'use strict'
function a(){
//do something...
}
function a(){
'use strict'
//do something...
}
作用
使用strict最大的好处就是让js运行环境帮你检验js是否“最优”
-
检查对象中的重复键
var obj = { key1: 'a', key2: 'b', key1: 'c' //obj.key1 = 'c',值被覆盖了 };
'use strict' var obj = { key1: 'a', key2: 'b', key1: 'c' //这里会报错,因为之前已经声明了key1的这个key了 };
-
使用未声明变量
funtion a(){ z = 1; } a(); //不会报错,定义了全局变量z
funtion a(){ 'use strict' z = 1; } a(); //报错,提示z未定义
-
函数中重复的参数名
function setInfo(name, age, name){ //do something } //函数声明的时候就会报错
-
在函数中对arguments进行操作
function setName(name){ arguments[0] = 'Jack'; alert(name); } setName('Tom'); //赋值成功,弹出Jack
'use strict' function setName(name){ arguments[0] = 'Jack'; alert(name); } setName('Tom'); //复制成功,弹出Tom,不会报错
-
试图对只读的属性进行赋值操作
function a(){ Object.prototype = 0; } a(); //不报错,也不会赋值成功
想必还有很多好处,所以大家在code javascript的时候,务必加上strict吧'use strict' function a(){ Object.prototype = 0; } a(); //会报错
感谢这篇博文,我在此基础上做了一些扩展,文章地址
网友评论