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/