亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年06月20日 14:15:57   作者:筱葭  
今天小編就為大家分享一篇解決循環(huán)中setTimeout執(zhí)行順序的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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ù)的時候,其實 i 已經(jīng)變成5了,因此console.log(i)輸出5。

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

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

解決方法二:加個閉包。

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

結(jié)果:開始輸出一個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)部沒有對i保持引用。

解決方法三:

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

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

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

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

相關(guān)文章

  • JS正則表達式比較常見用法

    JS正則表達式比較常見用法

    本文給大家介紹JS正則表達式比較常見用法,涉及到j(luò)s正則表達式用法相關(guān)知識,感興趣的朋友一起學習吧
    2016-01-01
  • JS實現(xiàn)元素的拖動與占位功能

    JS實現(xiàn)元素的拖動與占位功能

    這篇文章主要介紹了JS實現(xiàn)元素的拖動與占位功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 實用javaScript技術(shù)-屏蔽類

    實用javaScript技術(shù)-屏蔽類

    實用javaScript技術(shù)-屏蔽類...
    2006-08-08
  • JavaScript深入V8引擎以及編寫優(yōu)化代碼的5個技巧

    JavaScript深入V8引擎以及編寫優(yōu)化代碼的5個技巧

    這篇文章主要介紹了JavaScript深入V8引擎以及編寫優(yōu)化代碼的5個技巧,JavaScript引擎是執(zhí)行 JavaScript 代碼的程序或解釋器。JavaScript引擎可以實現(xiàn)為標準解釋器,或者以某種形式將JavaScript編譯為字節(jié)碼的即時編譯器。,需要的朋友可以參考下
    2019-06-06
  • 微信小程序利用co處理異步流程的方法教程

    微信小程序利用co處理異步流程的方法教程

    最近在學習微信小程序,下面就學習的內(nèi)容進行總結(jié),這篇文章主要給大家介紹了關(guān)于微信小程序利用co處理異步流程的方法,文中給出了詳細的介紹和示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-05-05
  • js 目錄列舉函數(shù)

    js 目錄列舉函數(shù)

    用js獲取文件目錄的代碼,一般主要是用了區(qū)別vbs的一些代碼
    2008-11-11
  • JS 自定義函數(shù)缺省值的設(shè)置方法

    JS 自定義函數(shù)缺省值的設(shè)置方法

    有時候定義的函數(shù)需要設(shè)置默認值,因為不帶就會出現(xiàn)一些錯誤,大家可以參考下這里默認值的定義方法。
    2010-05-05
  • 原生javascript實現(xiàn)自動更新的時間日期

    原生javascript實現(xiàn)自動更新的時間日期

    這篇文章主要介紹了原生javascript實現(xiàn)自動更新的時間日期的相關(guān)資料,對實現(xiàn)代碼進行詳細分析,感興趣的朋友可以參考一下
    2016-02-02
  • javascript 瀏覽器類型和版本號檢測代碼(兼容多瀏覽器)

    javascript 瀏覽器類型和版本號檢測代碼(兼容多瀏覽器)

    果對javascript了解不是特別深入的話,很容易就會寫出不兼容的代碼(就像我),這時候就得判斷瀏覽器了。比如事件偵聽、一些鼠標和鍵盤事件、Range等,一些都會不一樣.下面列出幾種常用的檢測瀏覽器方法,以饗觀眾!
    2010-04-04
  • 用cssText批量修改樣式

    用cssText批量修改樣式

    一般情況下我們用js設(shè)置元素對象的樣式會使用這樣的形式
    2009-08-08

最新評論