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);
}
我期待得到printStuff('foo')
在2000毫秒偏移和printStuff('bar')
在4000毫秒偏移,而是它打印「欄」兩次。我不知道發生了什麼,請幫忙。參數JavaScript回調函數
這是一個範圍問題;當你的'printStuff'終於運行時,'x'已被重新分配給'{offset:4000,str:'bar'}' – jackwanders 2012-07-06 14:22:21