3 回答

TA貢獻(xiàn)204條經(jīng)驗(yàn) 獲得超92個(gè)贊
setTimeout是異步函數(shù)會掛機(jī)然后等所有同步代碼執(zhí)行完后才會開始執(zhí)行,所以for循環(huán)會循環(huán)完 i = 5,console.log(i) 會先執(zhí)行,然后掛機(jī)的五個(gè)setTimeout 開始執(zhí)行,在一秒后輸出 i:5 。
就醬,望采納。

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊

TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超0個(gè)贊
一句話:js是單線程。settimeout會把console放到調(diào)用棧最下面,一秒后再執(zhí)行,而在這一秒沒js在執(zhí)行for循環(huán),等到執(zhí)行console時(shí)i變成5了

TA貢獻(xiàn)226條經(jīng)驗(yàn) 獲得超75個(gè)贊
個(gè)人理解,第一個(gè)因?yàn)槟居袎K級作用域,所以這個(gè)i一直是全局變量的i,每次變的都是他,所以最后打出來就5了。第二個(gè)是因?yàn)閟etTimeout他會加到隊(duì)列的后面,等待前面的執(zhí)行完再執(zhí)行,所以最后打出了。類似異步

TA貢獻(xiàn)261條經(jīng)驗(yàn) 獲得超78個(gè)贊
其他部分已經(jīng)執(zhí)行完了,然后1秒鐘過去了,執(zhí)行setTimeout,這個(gè)時(shí)候i也已經(jīng)加到5過了

TA貢獻(xiàn)261條經(jīng)驗(yàn) 獲得超78個(gè)贊
因?yàn)閟etTimeout延遲1秒執(zhí)行的,這個(gè)時(shí)候,其他的都執(zhí)行完了
添加回答
舉報(bào)