gpt4 book ai didi

Javascript函数问题

转载 作者:行者123 更新时间:2023-11-30 09:08:22 25 4
gpt4 key购买 nike

我搜索了但找不到这个看似简单的问题的答案,所以...

假设我有一个循环,我需要在其中设置回调。我的回调函数如下所示:

function callback(var1) { // code }

现在我的循环是这样的:

for( //condition)
{
var x = something_different_each_time;
document.getElementById('foo').addEventListener('click', function() { callback(x); }, false);
}

现在看起来即使循环运行了 n 次,匿名函数也只被编译一次——因此每次回调调用都使用相同的参数调用(即使循环中的 x 每次都不同)。

我一定在这里遗漏了一些东西..非常感谢任何帮助! :)

最佳答案

问题是 for 语句 block 没有创建新范围,为此,x 变量属于它的封闭范围,并且所有匿名函数引用同一个变量...

使用另一个函数创建一个新的词法环境以在每次迭代中保存 x 的值:

for(/*condition*/) {
var x = something_different_each_time;
document.getElementById('foo').addEventListener('click', function () {
return function(y) {
callback(y);
};
}(x), false);
}

关于Javascript函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880343/

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