在编程中我们会接触到循环和异步编程的情况,这时异步回调执行逻辑就会出现问题。我们用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);

 

相关文章: