在下面的代码中,我可以调用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
答案 0 :(得分:4)
变量baz
在匿名函数之外声明(即使在使用函数表达式为其赋值之前实际上没有定义它)。这将其范围置于所述函数之外。
foo
和bar
在匿名函数内声明,这将其范围限制为该函数。分配给baz
的函数可以访问它们,因为它们在创建时属于范围。
答案 1 :(得分:0)
baz
的范围内的内容在您的匿名函数返回后仍然可用。
了解更多信息,请阅读closures。