for(var i=0;i<5;i++){setTimeout(()=>{console.log(i)}, 0)} 的几种解法

第一种 闭包

for(var i=;i<5;i++){
    (function(i){
         setTimeout(()=>{
            console.log(i);
        }, 0);
    })(i)
}


for (var i = 0; i < 5; i++) {
    (() => {
        var privateI = i;
        setTimeout(() => {
            console.log(privateI);
        }, 0);
    })()
}

 

第二种 使用let

for(let i=0;i<5;i++){
     setTimeout(()=>{
        console.log(i);
    }, 0);
}

  

第三种 使用setTimeout的第三个参数

for(var i=;i<5;i++){
    setTimeout(()=>{
        console.log(i);
    }, 0, i);
}

  

第四种 使用Promise

for(var i=;i<5;i++){
    Promise.resolve(i).then(i=>{
        setTimeout(()=>{
            console.log(i);
        }, 0);
    })
}

  

 

第五种 try catch

for (var i = 0; i < 5; i++) {
    try {
        throw i
    } catch (i) {
        setTimeout(() => {
            console.log(i);
        }, 0);
    }
}

 

posted @ 2021-10-29 17:43  飞尽堂前燕  阅读(1252)  评论(0编辑  收藏  举报