《JS 函数的执行时机》

87 阅读1分钟

一,解释为什么如下代码会打印 6 个 6

     let i = 0
       for(i = 0; i<6; i++){
        setTimeout(()=>{
        console.log(i)
           },0)
       }

因为seTimeout的意思是,马上就执行或者尽快执行,setTimeout 是一个异步的函数, 那么这段代码的执行就变成了, 先走完整个循环,这时 i 已经变成了 6,才开始执行 6 个 console.log(i),所以最终只会打印出 6 个 6。

二,写出让上面代码打印 0、1、2、3、4、5 的方法

       for(let i = 0; i<6; i++){
          setTimeout(()=>{
          console.log(i)
           },0)
       }

三,除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5

      let i=0
       for(i = 0; i<6; i++){
        setTimeout((value)=>{
        console.log(value)
        },0,i)
      }
     通过 setTimeout 的第三个参数,将i传进去