gpt4 book ai didi

javascript - 将数组作为函数参数传递给 setTimeout 与传递变量不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:09 25 4
gpt4 key购买 nike

<分区>

以下代码使用 for 循环将值添加到数组。每次在控制台中记录阵列的当前状态。然后使用 setTimeout 函数在输出之间创建半秒的延迟。

但是延迟输出总是显示整个数组及其通过整个 for 循环后的状态,而不是调用 setTimeout 时的状态。

var my_array = [];

for (var i = 0; i < 10; i++){
my_array[i] = "Nr " + i;

console.log(my_array);
setTimeout(function(par) { console.log(par); }, 500*i, my_array);

}

如何解释这种行为?考虑以下代码,它是不同的,因为它将 i 变量发送到回调(而不是数组):

for (var i = 0; i < 10; i++){

console.log(i);
setTimeout(function(par) { console.log(par); }, 500*i, i);

}

此代码段将 i 变量及其调用 setTimeout 的时间值记录在延迟输出中。正如预期的那样,它不会记录 i 变量及其在 for 循环后的值。

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