JS|JS 函数的执行时机-关于setTimeout

  1. 以下代码为什么会打印出6个6
let i=0 for(i=0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) }

因为setTimeout的意思是稍后执行,也就是在等for循环结束之后再执行console.log(i),当for结束循环的时候i等于6,且只有1个i,所以打印出6个6
  1. 如何让以上代码打印出0--6
for(let i=0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) }

【JS|JS 函数的执行时机-关于setTimeout】因为JS在for和let一起用的时候会在每次循环的时候多创建一个i,每次循环都会重新创建一个i,所以会打印出0,1,2,3,4,5.

    推荐阅读