【发布时间】:2017-06-21 16:42:05
【问题描述】:
我正在尝试了解闭包,并从 MDN 发现了这段代码。我在 jsbin 中尝试过,它可以工作,但我不明白为什么必须将 makeFunc 分配给 var myFunc 然后调用 myFunc 而不是只调用 makeFunc,这不起作用。
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
【问题讨论】:
-
makeFunc()();有效。或者,如果您将return更改为return displayName();,则makeFunc();将起作用。 -
“而不仅仅是调用 makeFunc” 但你是在
var myFunc = makeFunc();中调用它。不确定我是否理解您的困惑。 -
@FelixKling 他们似乎不明白为什么简单地调用
makeFunc()不会触发警报。或者至少这是我的猜测。 -
“不起作用”当然不是一个有用的问题描述,因为您对它“应该如何工作”的期望可能与我们的完全不同。但是,如果您不解释您的观点,我们将无法真正帮助您。
-
是的。你可以离开 myFunc。只需执行 makeFunc()();
标签: javascript function variables closures