你不知道的JavaScript(下卷)
上QQ阅读APP看书,第一时间看更新

2.4 严格模式

ES5为这个语言新增了“严格模式”,严格限制了某些行为的规则。一般来说,这些限制可以将代码保持在一个更安全、更适当的规范集合之内。另外,遵循严格模式也更容易让引擎优化你的代码。严格模式是代码的一次重大突破,你应该在自己的程序中一直使用。

根据严格模式编译指示放置的位置,你可以选择使用单独的函数或者整个文件来遵循严格模式:

        function foo() {
            "use strict";


            // 这个代码是严格模式
            function bar() {
              // 这个代码是严格模式
            }
        }
        // 这个代码不是严格模式

对比:

        "use strict";


        function foo() {
            // 这个代码是严格模式


            function bar() {
                // 这个代码是严格模式
            }
        }


        // 这个代码是严格模式

使用严格模式的一个关键区别(改进!)是,不允许省略var的隐式自动全局变量声明:

        function foo() {
            "use strict";    // 开启严格模式
            a = 1;           // 省略var,出现ReferenceError错误
        }


        foo();

如果你在代码中打开严格模式,但代码报错或者开始出现bug,这可能会诱使你避开严格模式。但这个本能是一个坏习惯。如果严格模式导致程序出现问题,几乎可以确定这标志着你的程序中有些东西应该进行修复。

严格模式不只会让你的代码更加安全或者更易于优化,更代表了这门语言未来的发展方向。现在就要开始习惯严格模式,而不是一直往后推,这对你来说更简单一些,因为转变更晚只会更难!

有关严格模式的更多信息,参见本系列《你不知道的JavaScript(中卷)》第一部分的第5章。