gpt4 book ai didi

Javascript:回调函数是唯一允许以前瞻性方式引用外部变量的函数吗?

转载 作者:行者123 更新时间:2023-12-03 05:23:13 25 4
gpt4 key购买 nike

我有以下代码,请注意,在 close 事件的回调函数中,对变量 ConnectingLine 的引用位于回调本身之后:

$('.tabs').tabs({
close: function(event, ui) {
ConnectingLine.show();
}
});

var ConnectingLine = MyHelpers.connectingLine({options here...});

我假设这种引用适用于任何类型的闭包,但事实证明并非如此。例如:

var add = (function () {
return function () {return counter += 1;}
var counter = 7;
})();

function myFunction(){
document.getElementById("demo").innerHTML = add();
}

上面的代码会中断,导致 NaN 错误。显然,定义需要位于引用它的闭包函数之前。

我的问题是,什么让回调函数能够前瞻性地引用外部变量?这真的只是回调函数所独有的吗?谢谢。

最佳答案

控制永远达不到

var counter = 7;

因此,您的数学使用未定义值(counter已声明且可供使用,因为它已提升)。 += 运算符将 undefined 强制转换为 NaN,而 NaN 是有毒的。

这就是结果。

关于Javascript:回调函数是唯一允许以前瞻性方式引用外部变量的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com