【发布时间】:2011-12-04 18:57:12
【问题描述】:
为了避免在 JavaScript 中将我的代码暴露在全局范围内,我总是使用以下自执行函数:
(function() {
//Code comes here
})();
我相信这也被称为自执行匿名函数。有时,我还看到以下代码用于相同目的:
(function(d){
//Code comes here
})(document.documentElement);
我不确定这里有什么不同,所以我问这个问题。
这两种 JavaScript 上的自执行函数有什么区别(或有什么区别)?
【问题讨论】:
-
第一个函数不带任何参数,而第二个函数有。
-
好的,我想,但是
document.documentElement也可以在函数内部使用。为什么会这样使用? -
Javascript 中的函数永远不会“自动执行”,无论它们是否匿名。如果它们执行的话,总会有一个对函数的调用。您的电话就在分号之前。
-
@GregHewgill 嗯,所以我用错了这个词?我总是听到这个词,但我猜在这种情况下它被用作隐喻。此代码是否与我上面引用的第一个代码相同:
(function(w){})(window); -
这个术语是错误的,但现在大多数 JS 程序员都普遍理解为参考上面的示例。有很多人提倡使用 Immediately Invoked Function Expression(IIFE,发音为“iffy”)这个术语,我认为它更有意义。
标签: javascript