原文:for循環中的setTimeout()

打印結果:三個 原因分析:setTimeout 是一個異步處理函數,它會等待所有的主線程任務處理完,才開始執行自己的內部的任務,每隔 s往任務隊列中添加一個任務 閉包函數,setTimeout 中的函數,現在還沒執行 ,當主線程執行完時,這時i , 才開始執行任務隊列中的任務 閉包函數,setTimeout 中的函數開始執行,執行三次 。 for循環是遵循js執行機制 從上到下,依次同步執行,f ...

2019-09-23 19:33 0 721 推薦指數:

查看詳情

for循環中setTimeout,var與let的不同

先看下面兩段代碼 一個是輸出0 1 2 3 4一個是輸出5個5 為什么let的i,在setTimeout里的匿名函數,i取的還是塊級作用域里的i? 一個假設是let的循環中,每次循環,js引擎讓i都變成了一個新變量的原因導致的。 ...

Wed Jan 23 21:21:00 CST 2019 0 891
淺談循環中setTimeout執行順序問題

淺談循環中setTimeout執行順序問題 (下面有見解一二) 期望:開始輸出一個0,然后每隔一秒依次輸出1,2,3,4。 結果:輸出5。 原因:setTimeout 使函數延遲1s執行,而for循環執行完成還不到0.1秒,到執行函數的時候,其實 i 已經 ...

Fri Apr 12 03:37:00 CST 2019 0 1365
for循環中嵌套setTimeout,執行順序和結果該如何理解?

這兩天在搗鼓作用域的問題,有的時候知識這個東西真的有點像是牽一發而動全身的感覺。在理解作用域的時候,又看到了一道經典的面試題和例子題。 那就是在for循環中嵌套setTimeout延時,想想之前面試的時候面試官問到我這個問題,然而我當時對這玩意兒根本沒有深究,沒有去理解;非常草率的回答了,面試官 ...

Thu Aug 17 19:51:00 CST 2017 3 10965
JS中For循環中嵌套setTimeout()方法的執行順序

在For循環中執行setTimeOut()方法的代碼,執行順序是怎樣的呢? 代碼如下 應該會有人會說,很簡單呀,for循環進行遍歷,並且每次有一個輸出,那結果應該是0,1,2,3,4。 其實不然,運行上訴代碼之后,控制台輸出如下:5個5 下面解釋下為什么是5個5. ...

Tue Dec 10 21:59:00 CST 2019 0 1367
js經典面試問題:如何讓for循環中setTimeout()函數像預想中一樣工作?

setTimeout()是js中的一類重要函數,將一段代碼延遲一定時間並異步執行。但是這個函數經常不聽話。在實踐中,可能經常有人碰到類似下面的這種情況: 我們期望的結果是,先隔100毫秒彈出1,再隔100毫秒彈出2。但是跑起來后,alert的兩次內容都是數字3,而且緊挨着輸出 ...

Sat Feb 18 18:10:00 CST 2017 0 19631
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM