JS 函数的执行时机

为什么以下代码执行打印出6个6

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

setTimeout(),设置了一个定时器,在定时器到期后执行一个函数或指定的一段代码,这里延迟时间是0,可以当成尽快打印出i。

由于每执行一次for循环就要定一次时,也就是说每次循环都有一个闹钟,但是到循环结束才会打出结果,一共执行了6次循环,那么就定了6个闹钟,每次到期后打印出1个6,总共打印6次

怎样才能让上面代码打印出0、1、2、3、4、5

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

将let写进for循环里,每循环一次,let就会新创建一个i,这是JS为了满足大众需求创建出来的

除了使用 for let 配合,以下方法也可以打印出 0、1、2、3、4、5

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

推荐阅读更多精彩内容