澄清一个关于尼古拉斯的“可维护JavaScript”第199页的JavaScript范围

StackOverflow https://stackoverflow.com/questions/20353171

  •  25-08-2022
  •  | 
  •  

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

如果您希望严格的模式适用于Mulitple功能而无需多次编写“严格使用”,请使用即时功能调用:

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

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

}());

我的问题是,如果这是整个不可分割的功能的样子,那么可能没有立即调用它的效果(其余)呢?因为在匿名函数中只声明了两个函数,但它既不是从那里调用的(因此两个功能无法对世界其他地方产生任何副作用),也不会返回到外部,因此丢失了他们的参考文献。

可能,我只想确认,代码段仅旨在显示“使用严格”的使用,因此它只是省略了对这两个功能的调用或返回的呼叫?

谢谢,

/布鲁因

有帮助吗?

解决方案 2

我认为你是正确的。这个示例不是一个完整的示例,因为它永远不会调用其中定义的函数。该示例只是为了说明如何在特定的一组功能中应用“严格”。如果您想将其扩展一点,以便将功能导出,则可以做这样的事情:

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

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

    return {
        doSomething: doSomething,
        doSomethingElse: doSomethingElse
    };

}());

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

其他提示

这个想法是伊夫(Iife)封闭 全部 您的代码,而不仅仅是这些功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top