【发布时间】:2015-02-19 08:56:08
【问题描述】:
我一直试图准确了解 IIFE 在匿名函数方面的工作原理。我了解它们在避免全局变量冲突方面的用途,并且它们创建了自己的本地范围。
我不清楚调用这样的匿名函数时会发生什么。
(function () {
var myVar = 'foo';
}
)()
如果立即调用它并且它在全局范围内不可用,那么它在哪里可用?如何访问 myVar?
【问题讨论】:
-
你无法访问 myVar,IIFE 作为一个受到良好保护的单身人士工作
-
除非您将其设为
window的属性或上述范围内的其他内容,否则您将无法访问它。 -
这是否意味着将(窗口)传递给调用括号?
-
@byrdr 不,但你可以,这将有助于缩小。无论哪种情况,您都需要使用
window.myVar。 -
是的——这实际上是你编写这样代码的原因之一:保护全局命名空间免受污染,这样你的脚本就不会踩到其他脚本使用的变量,反之亦然。
标签: javascript iife