在第199页的附录A中,当讨论使用“使用严格”时,它是这样的:


  如果您希望严格模式适用于多种功能而无需
  多次写“使用严格”,使用立即函数
  调用:


//good
(function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

}());


我的问题是,如果这是整个匿名函数的样子,那么立即调用它可能(对其余部分)没有影响?因为在匿名函数中仅声明了两个函数,但它们既不是在内部调用的(因此这两个函数不会对世界其他地方产生任何副作用),也不会返回到外部,因此它们的引用都将丢失。

大概,我只想确认一下,该代码段仅旨在显示“使用严格”的使用,因此它只是省略了对这两个函数的调用或返回?

谢谢,

/布鲁因

最佳答案

我认为你是对的。这个例子不是一个完整的例子,因为它永远不会调用其中定义的函数。该示例仅用于说明如何在一组特定功能上应用“严格使用”。如果您想对其进行扩展以便导出函数,则可以执行以下操作:

var myModule = (function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

    return {
        doSomething: doSomething,
        doSomethingElse: doSomethingElse
    };

}());

myModule.doSomething();
myModule.doSomethingElse();

关于javascript - 阐明有关Nicholas“可维护JavaScript”第199页的JavaScript范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20353171/

10-09 08:06