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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM