在附录A,第199页中,当讨论使用“use strict”时,它是这样的:
如果你想要严格模式应用于多功能而不需要 多次写“use strict”,使用立即功能 调用:
//good
(function() {
"use strict";
function doSomething() {
// code
}
function doSomethingElse() {
// code
}
}());
我的问题是,如果这是整个非常函数的样子,那么可能对其立即调用它没有影响(对其余的)?因为在匿名函数中只声明了两个函数,但它们既没有从那里调用(因此这两个函数不能对世界其他地方产生任何副作用),也没有返回到外部,因此它们的引用都会丢失。
可能我只是想确认一下,代码片段只是为了显示“use strict”的用法,所以它只是省略了对这两个函数的调用或返回?
谢谢,
/布鲁因
答案 0 :(得分:2)
我们的想法是IIFE包含所有代码,而不仅仅是那些函数。
答案 1 :(得分:1)
我认为你是对的。这个例子不完整,因为它永远不会调用它中定义的函数。该示例仅用于说明如何在特定的一组函数中应用“use strict”。如果你想扩展它以便导出函数,你可以这样做:
var myModule = (function() {
"use strict";
function doSomething() {
// code
}
function doSomethingElse() {
// code
}
return {
doSomething: doSomething,
doSomethingElse: doSomethingElse
};
}());
myModule.doSomething();
myModule.doSomethingElse();