欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript的setTimeout()使用閉包特性時(shí)需要注意的問題

 更新時(shí)間:2014年09月23日 11:15:17   作者:iCode0410  
這篇文章主要介紹了Javascript的setTimeout(0)使用閉包特性時(shí)需要注意的問題,需要的朋友可以參考下

setTimeout經(jīng)常被用于延遲執(zhí)行某個(gè)函數(shù),用法為:

復(fù)制代碼 代碼如下:

setTimeout(function(){

}, timeout);

有時(shí)為了進(jìn)行異步處理,而使用setTimeout(function…,0);比如:

復(fù)制代碼 代碼如下:

function f(){
… // get ready
setTimeout(function(){
…. // do something
}, 0);
 
return …;
}

 在setTimeout設(shè)定的函數(shù)處理器之前,函數(shù)f返回;

在使用異步處理時(shí),尤其是使用閉包特性時(shí),要特別小心;

例如:

復(fù)制代碼 代碼如下:

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

對于初次使用這種方式的同學(xué)來說,很可能會(huì)認(rèn)為程序會(huì)打印0…9,可結(jié)果確實(shí)打印10個(gè)10;
問題就在于,當(dāng)循環(huán)完成時(shí),function得到執(zhí)行,而i已經(jīng)變成10,console.log(i)中使用的是10!
 
加入你的目的是打印0…9,那么可以換一種方式,用函數(shù)參數(shù)來保存0….9(其實(shí)也是利用了閉包):

復(fù)制代碼 代碼如下:

for(var i = 0 ; i < 10; i++){
setTimeout((function(i){
return function(){
console.log(i);
}
})(i), 0);
}

相關(guān)文章

  • jQuery javascript獲得網(wǎng)頁的高度與寬度的實(shí)現(xiàn)代碼

    jQuery javascript獲得網(wǎng)頁的高度與寬度的實(shí)現(xiàn)代碼

    下面小編就為大家?guī)硪黄猨Query javascript獲得網(wǎng)頁的高度與寬度的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考
    2016-04-04
  • 無阻塞加載js,防止因js加載不了影響頁面顯示的問題

    無阻塞加載js,防止因js加載不了影響頁面顯示的問題

    下面小編就為大家?guī)硪黄獰o阻塞加載js,防止因js加載不了影響頁面顯示的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來
    2016-12-12
  • JS使用插件cryptojs進(jìn)行加密解密數(shù)據(jù)實(shí)例

    JS使用插件cryptojs進(jìn)行加密解密數(shù)據(jù)實(shí)例

    這篇文章主要介紹了JS使用插件cryptojs進(jìn)行加密解密數(shù)據(jù),結(jié)合完整實(shí)例形式分析了javascript基于加密插件實(shí)現(xiàn)加密解密功能的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • JavaScript使用Promise控制并發(fā)請求

    JavaScript使用Promise控制并發(fā)請求

    當(dāng)我們需要同時(shí)處理多個(gè)請求時(shí),如何避免請求之間的沖突和混亂呢,這就是今天我們要探討的話題——如何使用Promise控制并發(fā)請求,感興趣的可以了解一下
    2023-06-06
  • javascript瀑布流式圖片懶加載實(shí)例解析與優(yōu)化

    javascript瀑布流式圖片懶加載實(shí)例解析與優(yōu)化

    這篇文章主要針對javascript瀑布流式圖片懶加載實(shí)例進(jìn)行解析與優(yōu)化,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JavaScript實(shí)現(xiàn)一個(gè)簡易的計(jì)算器實(shí)例代碼

    JavaScript實(shí)現(xiàn)一個(gè)簡易的計(jì)算器實(shí)例代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)一個(gè)簡易的計(jì)算器實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助,一起跟隨小編過來看看吧
    2018-05-05
  • 分享JavaScript的?3?種工廠模式的用法

    分享JavaScript的?3?種工廠模式的用法

    這篇文章主要分享JavaScript的?3?種工廠模式,工廠模式是設(shè)計(jì)模式中最常用的設(shè)計(jì)模式之一,這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,下文關(guān)于工廠模式的更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • 如何解決日期函數(shù)new Date()瀏覽器兼容性問題

    如何解決日期函數(shù)new Date()瀏覽器兼容性問題

    這篇文章主要介紹了如何解決日期函數(shù)new Date()瀏覽器兼容性問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • ajax前臺后臺跨域請求處理方式

    ajax前臺后臺跨域請求處理方式

    本篇文章通過前臺跨域請求處理以及后臺跨域的數(shù)據(jù)處理方式介紹,詳細(xì)分析了ajax跨域的問題,對此有需要的朋友學(xué)習(xí)下。
    2018-02-02
  • 使用apifm-wxapi模塊中的問題及解決方法

    使用apifm-wxapi模塊中的問題及解決方法

    這篇文章主要介紹了使用apifm-wxapi模塊中的問題及講解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論