JS 函数的执行时机

2022-07-18  本文已影响0人  cy_Wey
for (var i = 0 ; i < 6 ; i++) {
  setTimeout(() => {
  console.log (i)
  }, 0)
}

这个循环会打印 6 个 6,而不是 0,1,2,3,4,5 因为 for 语句执行完后,i 立马会变成 6,并执行了 6 次 setTimeout。

如果要打印出 0,1,2,3,4,5,

可将 var 改成 let。

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

或者将 setTimeout 放在 for 的外层。

setTimeout(() => {
for (var i = 0 ; i < 6 ; i++) {
  console.log (i)
  }
}, 0)
上一篇 下一篇

猜你喜欢

热点阅读