javascript - 但是 var 不是针对局部变量的吗?

标签 javascript closures

This是我的代码:

var markers={};
example();

function example() {
    var myFunct = function () {
        alert("hello");
    };

    markers["myIndex"] = myFunct; 
}

markers["myIndex"]();

如您所见,myFunct 是“var”(因此,当 example() 完成时,它将被销毁,因为它是本地的)。但实际上,访问markers["myIndex"](),函数被引用了,我就可以访问了。为什么?

最佳答案

这并不像您期望的那样工作。换句话说,当 example() 完成时,myFunct 不会被销毁,因为在外部范围的变量中仍然有对该函数的引用,markers

如果在 example() 末尾没有其他引用它,或者如果只有具有相同或更小范围的变量引用它,那么它会被“销毁”的唯一方法,前提是这些变量也遵循相同的规则,并且没有被外部变量引用。

关于javascript - 但是 var 不是针对局部变量的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197320/

相关文章:

loops - Google Scripts For 循环

collections - 关闭的集合。不同的调用方式。

javascript - 针对 RegExp 的 Google Closure 编译器警告

javascript - 拖放选择元素(谷歌浏览器)

javascript - 语法 - 如何将 eq(i) 添加到变量?

javascript - 我可以更改 HTML 元素的类型吗?

c# - 如何通过 lambda 表达式传递捕获的变量,就好像它未被捕获一样?

javascript - 仅在背景图像 jquery mobile 上滚动内容?

javascript - 只允许输入 float

swift 2 : Catching errors in a closure