我有这样的代码:
var increment = 200;
for (var j=0; j<10; j++){
var print = function(){ console.log("===== J ===== "+j); }
setTimeout(print, increment);
increment+= 200;
}
控制台总是打印 10。我认为这可能是 for 语句和 setTimeout 在不同的线程中执行。我该如何打印 j 的正确值?
提前致谢。
最佳答案
这是一个标准绑定(bind)问题,你可以找到很多similar questions在 stackoverflow 上。
基本上,它对所有值使用一个“j”。试试这个:
function getBoundLog(j)
{
return function(){console.log("===== J ===== "+j);}
}
var increment = 200;
for (var j=0; j<10; j++){
setTimeout(getBoundLog(j), increment);
increment+= 200;
}
关于javascript - 共享数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6458088/