JS 函数的执行时机

121 阅读1分钟

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

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

答:因为setTimeout是一个异步函数,它内部的操作并不会在其被调用时立即执行,每一次循环中,它的打印任务都被放在一个队列中,只有当for循环结束后才会开始从队列中取出任务并打印i,而此时i为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++){
  let j = i
  setTimeout(()=>{
  	console.log(j)
  },0)
}