在下面的代码中,我可以调用 baz.我还在其他地方读到“JavaScript 具有函数级作用域”。我知道,我在某个地方混淆了自己。有人能让我明白吗?
/* An anonymous function used as a closure. */
var baz;
(function() {
var foo = 10;
var bar = 2;
baz = function() {
return foo * bar;
};
})();
baz(); // baz can access foo and bar, even though it is executed outside of the
// anonymous function
.
最佳答案
变量 baz
在匿名函数外部声明(即使在您使用函数表达式为其赋值之前它实际上并未定义)。这将其范围置于所述功能之外。
foo
和 bar
在匿名函数内声明,这将它们的范围限制在该函数内。分配给 baz
的函数可以访问它们,因为它们在创建时就在范围内。
关于javascript - 是否可以调用闭包内定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1656648/