JS函数的执行时机

181 阅读1分钟
  • 下代码会打印出 6 个 6,

原因:setTimeout()会设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。如果省略时间参数,delay取默认值0,意味着尽快执行。由于循环进行得很快,所以当setTimeout()执行时for循环就已经完成了整个循环,此时的i的值为6,由于定了6次“闹钟”,所以打印的个数为6

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
  • 让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
[1,2,3,4,5].forEach(function(i){
console.log(`${i}`)
})