一直以来,Javascript 松散灵活的语法饱受争议。 于是,ECMAScript 5.0 定义中引入了strict mode,使Javascript解释器可以用"严格"的语法来解析代码,以帮助开发人员发现错误。IE 10 开始支持strict mode。
开启strict mode很简单,在代码的开头加入
"use strict";
这样很巧妙地兼容了那些不支持 strict mode老的浏览器,不会报错。
使用 strict mode 有以下几个好处:
防止意外定义的全局变量
"use strict";
x = 5; // 没有事先声明,会报错
取消this值的自动转换
window.hi= "Hi";
function sayHi() {
alert(this.hi); // 报错
}
防止重复定义
var someObject = {
prop: "test",
prop: "test2" //报错
};
此外,strict mode 还 去掉了对with 语句的支持; eval 中声明的变量也不会在包含域中创建。
最后,建议大家开始在JS代码中使用strict mode,更早发现隐藏的错误。