【发布时间】:2023-03-24 01:50:02
【问题描述】:
Stoyan Stefanov 在 JavasScript Patterns 中说:“您需要一个即时函数将所有代码包装在其本地范围内,而不会将任何变量泄漏到全局范围内”第 70 页。
这是他的例子
(function() {
var days = ['Sun','Mon'];
// ...
// ...
alert(msg);
}());
但是肯定因为 days 被定义为一个 var,它只是功能范围?立即函数的唯一好处是立即调用该函数。没有范围优势。正确吗?
【问题讨论】:
-
你不会从外面看到这些变量
-
如果它不在上面的闭包内,它将是一个全局变量。 (范围将是窗口,即与在没有
var的情况下声明它相同)不确定我明白您的要求... -
不,正如您所说,
days将在函数范围内,而不是全局范围内。 这就是范围优势。 -
恕我直言,您以错误的方式解释了他的评论。您的代码没有太多优势(尽管有,但这不是重点)。主要原因是同一站点上的其他 Javascript 将有额外的保护层,以防止您可能犯的任何错误。
标签: javascript function iife