JS 函数的执行时机

386 阅读1分钟

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

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

答:应为setTimeout函数里面的代码会在for循环完结之后才会执行,那时i已经变成6了,所以打印出来的就是6个6

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

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

3 (可选内容)除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5,如果你能找到并写在博客里,可以得到五星好评 :)

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