for循环如何优雅的输出i

189 阅读1分钟

0 1 2 3 4

for (var i = 0; i < 5; i++) {
  console.log(i) //0 1 2 3 4
}
console.log(i)  //5

5 5 5 5 5

for(var i=0;i<5;i++){
    setTimeout(function(){
            console.log(i)
    },1000*i)   //倒计时五秒 依次弹出 55
}

5 5 5 5 5

for(var i=0;i<5;i++){
    setTimeout(function(){
       console.log(i)
    },1000*i)  //控制台同时弹出55
}

0 1 2 3 4

for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
                console.log(i) //倒计时一秒之后弹出 0 1 2 3 4
        },1000)
    }(i))
}

5 5 5 5 5

for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
                console.log(i) //倒计时一秒之后输出5 5 5 5 5 
        },1000)
    }())
}

undefined undefined undefined undefined undefined

for(var i=0;i<5;i++){
    (function(){
        setTimeout(function(){
                console.log(i) //倒计时一秒之后输出5个undefined
        },1000)
    }(i)
}

0 1 2 3 4

for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
            console.log(i) //倒计时一到五秒依次弹出0 1 2 3 4
        },1000*i)
    }(i))
}

0 1 2 3 4

for(var i=0;i<5;i++){
    setTimeout((function(i){
       console.log(i)  //立即打出 0 1 2 3 4
    })(i),1000)
}