亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于js for循環中的setTimeout()一個問題

關于js for循環中的setTimeout()一個問題

蕪湖不蕪 2018-08-16 15:10:46
這里面我知道結果輸出得是5,可是為什么是4個5,js是單線程的,setTimeout()執行時for循環已經執行完畢,i++成為5,setTimeout()根據作用域鏈查找,輸出i的結果是5,可是為什么是4個5,for循環不是已經執行完畢了嗎?怎么會輸出4個5。不太懂,麻煩大家解答一下,謝謝!for (var i = 1; i <= 4; i++) {             setTimeout(function () {                 console.log(i);              }, 1000)         }
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

我是閑來無聊,也不知道題主看了別人的回答是不是已經明白了。
1.for循環執行了四次,所以循環體的代碼實際上被運行四次,所以是打印四次。
2.setTimeout(code,ms)指在ms毫秒后執行code代碼。這里是一秒,在一秒內for 循環肯定是運行完了,此時i已經被賦值為5,當剛好一秒的時候運行code代碼,這里打印變量i,所以打印的結果是5。
綜上,打印4個5。

查看完整回答
反對 回復 2018-09-07
  • 1 回答
  • 0 關注
  • 830 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號