javascript - 是否可以调用闭包内定义的函数?

标签 javascript closures

在下面的代码中,我可以调用 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 在匿名函数外部声明(即使在您使用函数表达式为其赋值之前它实际上并未定义)。这将其范围置于所述功能之外。

foobar 在匿名函数内声明,这将它们的范围限制在该函数内。分配给 baz 的函数可以访问它们,因为它们在创建时就在范围内。

关于javascript - 是否可以调用闭包内定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1656648/

相关文章:

c# - 循环变量上的闭包的正确语义是什么?

ios - 如何摆脱等待完成处理程序

swift - Swift 中 auto 和 escaping 闭包的区别和目的是什么?

javascript - AngularJS如何使用变量动态更新部分作用域

php - 我可以在 PHP 函数中添加 javascript 警报吗?如果是,如何?

javascript - <a-animation> 在 aframe 0.9.2 中不起作用

javascript - Firebase - 将对象推送到嵌套的对象列表中

javascript - jquery:如果列标题具有类,则更改列的背景颜色

Java 闭包 - 当前状态

javascript - 为什么可以访问 "what-I-think-is-a-closure"中的变量?