gpt4 book ai didi

javascript - javascript回调函数的参数

转载 作者:行者123 更新时间:2023-11-29 17:23:02 26 4
gpt4 key购买 nike

var data = [{offset: 2000, str:'foo'}, {offset: 4000, str:'bar'}];

for (var i=0; i<data.length; i++) {
var x = data[i];
setTimeout(function(){printStuff(x.str)}, x.offset);
}

function printStuff(str) {
console.log(str);
}

我期待在 2000 毫秒偏移处获得 printStuff('foo') 并在 4000 毫秒偏移处获得 printStuff('bar') 但它却打印出“bar”两次。我不知道发生了什么,请帮忙。

最佳答案

这样做:

for (var i = 0; i < data.length; i++) {
(function (x) {
setTimeout(function () {
printStuff(x.str)
}, x.offset);
})(data[i]);
}

你的问题是当函数被调用时 x 在闭包中发生了变化。

关于javascript - javascript回调函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363984/

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