在编程中我们会接触到循环和异步编程的情况,这时异步回调执行逻辑就会出现问题。我们用setTimeout来模拟异步的:
for(var i=0;i<3;i++){ setTimeout(function(){ console.log(i) //3 },20); };
结果输出三次3;
我们使用即时函数就能结果这个问题,使每个异步回调都有自己独有的变量:
for(var i=0;i<3;i++)(function(index){ setTimeout(function(){ console.log(index) //0 1 2 },20); })(i);