考虑以下示例:
var cb = function (t) {
console.log('callback -->' + t);
};
for(var i = 0; i<3; i++) {
console.log(i);
setTimeout(function(){
cb(i);
},1000);
}
此代码段的输出是:
0
1
2
callback ---> 3
callback ---> 3
callback ---> 3
一切都按预期工作,for 循环将 3 个回调调用放入事件循环中。在 for 循环结束时 i == 3 并且当回调被执行时,它们都会打印 3,因为它们包含指向 i 的链接,即 3。如何改进此代码段,以便在执行回调时使用实际传递给它的值。
输出应该是:
callback ---> 1
callback ---> 2
callback ---> 3
提前致谢。