For循环中使用定时器

for(var i=0; i<5;i++) {

  setTimeout(() => {

  console.log(i)

})

}

输出结果:

5

5

5

5

5

原因是 var 变量不存在块级作用域,这5次循环中 setTimeout 使用的 i 其实都是一个 i,而setTimeout 异步执行会在 for 循环之后执行。所以将var变量换成let即可。

for(let i=0;i<5;i++) {

  setTimeout(() => {

  console.log(i)

})

}

输出结果:

0

1

2

3

4

posted @ 2022-04-13 10:06  菜鸟阿强  阅读(895)  评论(0)    收藏  举报