真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

解決循環(huán)中setTimeout執(zhí)行順序的問題

期望:開始輸出一個(gè)0,然后每隔一秒依次輸出1,2,3,4。

在南召等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站制作,南召網(wǎng)站建設(shè)費(fèi)用合理。

for (var i = 0; i < 5; i++) { 
 setTimeout(function() { 
  console.log(i); 
 }, 1000 * i); 
} 

結(jié)果:輸出5。

原因:setTimeout 使函數(shù)延遲1s執(zhí)行,而for循環(huán)執(zhí)行完成還不到0.1秒,到執(zhí)行函數(shù)的時(shí)候,其實(shí) i 已經(jīng)變成5了,因此console.log(i)輸出5。

解決方法一:使用let塊作用域。

for (let i = 0; i < 5; i++) { 
  setTimeout(function() { 
   console.log(i); 
 }, 1000 * i); 
} 

解決方法二:加個(gè)閉包。

for (var i = 0; i < 5; i++) { 
 (function(i) { 
  setTimeout(function() { 
   console.log(i); 
  }, 1000 * i); 
 })(i); 
} 

結(jié)果:開始輸出一個(gè)0,然后每隔一秒依次輸出1,2,3,4。

失敗方法:

for (var i = 0; i < 5; i++) { 
 (function() { 
  setTimeout(function() { 
   console.log(i); 
  }, 1000 * i); 
 })(); 
} 

結(jié)果:輸出 5。

原因:去掉函數(shù)的參數(shù)i,則函數(shù)內(nèi)部沒有對(duì)i保持引用。

解決方法三:

for (var i = 0; i < 5; i++) { 
 setTimeout((function(i) { 
  console.log(i); 
 })(i), i * 1000); 
} 

結(jié)果:立馬輸出0-4。

原因:setTimeout可以接受函數(shù)或者字符串作為參數(shù),而給setTimeout傳遞了一個(gè)立即執(zhí)行函數(shù),該立即執(zhí)行函數(shù)是undefined ,也就是說等價(jià)于setTimeout(undefined, ...)。立即執(zhí)行函數(shù)會(huì)立即執(zhí)行。

以上這篇解決循環(huán)中setTimeout執(zhí)行順序的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前文章:解決循環(huán)中setTimeout執(zhí)行順序的問題
地址分享:http://weahome.cn/article/goeosg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部