gpt4 book ai didi

javascript - JS 中关于在循环中引用相同数据的变量的规则是什么?

转载 作者:行者123 更新时间:2023-11-30 12:40:54 24 4
gpt4 key购买 nike

<分区>

我只需要使用部分应用程序将数据传递到回调中,我发现我需要一个间接层来防止循环的后续运行更改我传递给回调的数据。

这里有一个非常简单的工作示例:http://jsfiddle.net/s5gVj/

(如果 jsfiddle 是不言自明的,请随时直接跳到下面的问题)

没有间接

这将始终将标签设置为“按下按钮 1”。

无论按下哪个按钮都会发生这种情况。

for(var i = 0 ; i < buttons.length ; i++)
{
var buttonID = i;
$(buttons[i]).click(
function(e)
{
$("label").html("Button " + buttonID + " pressed.");
});
}

间接地,通过一个函数

同时,在中间使用一个函数可以纠正问题

对于第一个按钮,结果将是“Button 0 pressed”

对于第二个按钮,它将是“按下按钮 1”。

var buttonClickHandlerWithID = 
function(buttonID)
{
return function(e)
{
$("label").html("Button " + buttonID + " pressed.");
}
}

for(var i = 0 ; i < buttons.length ; i++)
{
$(buttons[i]).click(buttonClickHandlerWithID(i));
}


为什么会这样?函数调用是否有什么特别之处确保变量被复制,从而不再引用相同的数据,或者是否有其他事情发生?

我希望在每次迭代时重新创建在 for 循环中声明的变量,因此每次迭代都是独立的,但我想情况并非如此?

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