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