次の例を検討してください。
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 loop は 3 つのコールバック呼び出しをイベント ループに入れます。for ループの終わりまでに i == 3 になり、コールバックが実行されると、すべてのコールバックに 3 である i へのリンクが含まれているため、3 が出力されます。このスニペットを改善して、コールバックが実行されたときに実際のそれに渡された値。
出力は次のようになります。
callback ---> 1
callback ---> 2
callback ---> 3
前もって感謝します。