Possible Duplicate:
Javascript closure inside loops - simple practical example
for (i = 0; i < 100; i++) {
setTimeout(function() {
console.log(i);
}, 500)
}
在上面的代码中,它只会打印 100。我知道原因了。但是我如何将当前的 i 值发送到 setTimeout
中的回调?
最佳答案
在循环内使用匿名函数来创建闭包:
for (i = 0; i < 100; i++) {
(function(i){
window.setTimeout(function() {
console.log(i);
}, 500)
})(i);
}
当您在调用时将值传递给函数时,该值将被复制,并且该函数的每个实例都将拥有自己的副本,该副本在循环计数器更改时不会更改。
关于javascript - 将值传递给nodejs中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547042/