有关for循环输出数字的面试题

for (var i = 0; i< 5; i++){
        setTimeout(() => {
            console.log(i);
        }, 1000)
    }
 
这是原题,怎么使他说出0,1,2,3,4
 
for (var i = 0; i< 5; i++){
      (function(){
        console.log(i)
      })(i)
    }
    for (var i = 0; i< 5; i++){
      (function(){
        console.log(Number(this))
      }.bind(i))()
    }
    for (var i = 0; i< 5; i++){
      (function(){
        console.log(Number(this))
      }.call(i))
    }
    for (var i = 0; i< 5; i++){
      new Promise(()=>{
        console.log(i)
      })
    }
 
还有一种就是将var改成let这道题早就想写下了,
带着setTimeout
for (var i = 0; i< 10; i++){
            
            // (function(){
            //     let a = i
            //     setTimeout(()=>{
            //         console.log(a)
            //     },1000)
            // })(i)
            // (function(){
            //     setTimeout(()=>{
            //         console.log(Number(this))
            //     },1000)
            // }.bind(i)())

            // (function(){
            //     setTimeout(()=>{
            //         console.log(Number(this))
            //     },1000)
            // }.call(i))

            // new Promise(function(){
            //     let a = i
            //     setTimeout(()=>{
            //         console.log(a)
            //     },1000)
            // })
        }
posted @ 2020-03-09 16:47  国服第一李师师  阅读(167)  评论(0编辑  收藏  举报