ES5在语言中加入了一个“strict模式”,它收紧了一些特定行为的规则。一般来说,这些限制被视为使代码符合一组更安全和更合理的指导方针。另外,坚持strict模式一般会使你的代码对引擎有更强的可优化性。strict模式对代码有很大的好处,你应当在你所有的程序中使用它。
根据你摆放strict模式注解的位置,你可以为一个单独的函数,或者是整个一个文件切换到strict模式:
function foo() {
"use strict";
// 这部分代码是strict模式的
function bar() {
// 这部分代码是strict模式的
}
}
// 这部分代码不是strict模式的
将它与这个相比:
"use strict";
function foo() {
// 这部分代码是strict模式的
function bar() {
// 这部分代码是strict模式的
}
}
// 这部分代码是strict模式的
使用strict模式的一个关键不同(改善!)是,它不允许因为省略了var
而进行隐含的自动全局变量声明:
function foo() {
"use strict"; // 打开strict模式
a = 1; // 缺少`var`,ReferenceError
}
foo();
如果你在代码中打开strict模式,并且得到错误,或者代码开始变得有bug,这可能会诱使你避免使用strict模式。但是纵容这种直觉不是一个好主意。如果strict模式在你的程序中导致了问题,那么这标志着在你的代码中几乎可以肯定有应该修改的东西。
strict模式不仅将你的代码保持在更安全的道路上,也不仅将使你的代码可优化性更强,它还代表着这种语言未来的方向。对于你来说,现在就开始习惯于strict模式要比一直回避它容易得多 —— 以后再进行这种转变只会更难!
注意: 关于strict模式的更多信息,参见本系列的 类型与文法 的第五章。