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);
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM