JS 函数的执行时机

152 阅读1分钟

让我们来探讨一下以下代码吧!

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
  • 打印结果: 6个6

为什么结果是6个6

setTimeout函数的作用是将结果过段时间在打印,当循环中执行后结果不会立刻打印出来,过段时间再打印,而此时i=6,循环执行了六次,所以要打印六次,所以结果为六个6。

使用setTimeout让打印出0、1、2、3、4、5

for(let i=0 ; i<6 ; i++){
setTimeout(() =>{
	console.log(i)
    },0)
}
  • 此时在for循环中用let声明i,let会把i复制,循环了6次复制了6次,当一段时间后i的值有6个,分别是0,1,2,3,4,5。

使用立即执行函数

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