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