setTimeout循環傳參數幾種方式


for(var i=0;i<5;i++){
        setTimeout(function(){
            console.log(`錯誤 ${i}`);
        },0)
    }
這種錯誤的,參數不會變!
以下幾種方式正確。
 for(var i=0;i<5;i++){
        (function(i){
            setTimeout(function(){
                console.log(`閉包 ${i}`);
            },0)
        })(i);
    }

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

     
    for(var i=0;i<5;i++){
        setTimeout(function(i){
            console.log(`bind ${i}`);
        }.bind(null,i),0)
    }

    
     
    for(var i=0;i<5;i++){
    
        setTimeout(function(i){
            console.log(`參數 ${i}`);
        },0,i)
    }

間隔3秒執行,注意i*3000:

 for(var i=0;i<5;i++){
        (function(i){
            setTimeout(function(){
                console.log(`閉包 ${i}`);
                //alert("閉包"+ i);
            },i*3000)
        })(i);
    }

setInterval是一直循環的 到4重新執行:

var i = 0;
setInterval(function(){
    if( i > 4 ){
        i = 0;
    }
    List(i);
    i++;
},5000);
function List(i){
  document.write(i+"<br />");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM