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

Javascript 設(shè)計模式(二) 閉包

 更新時間:2010年05月26日 22:14:34   作者:  
本來應(yīng)該是第二章,接口,但因為閉包實在不懂,所以先看看閉包
正文

閉包的概念:

閉包是一個擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個函數(shù)),因而這些變量也是該表達(dá)式的一部分。

最常見的閉包


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

function a() {
var i=0;
return function(){
alert(i++);
}
}
var b=a();
for(var i=0;i<3;i++){
b();
}


解釋上面代碼前,先接受一個函數(shù)的創(chuàng)建和執(zhí)行過程

第一步:定義函數(shù),設(shè)置環(huán)境,創(chuàng)建作用域鏈(scope chain)現(xiàn)a為全局變量,則a的作用域鏈中只有window

第二步:執(zhí)行a, 首先創(chuàng)建作用域(a.scope=a),然后創(chuàng)建活動對象(callObject),并將callObject放入a的作用域鏈的頂端,因此a的作用域鏈中含有兩個對象(a和window)

第三步:在活動對象上添加一個arguments屬性,保存調(diào)用a時的參數(shù)值

第四步:將形參和內(nèi)部變量賦值到活動對象a上

javascriptGC原理:如果一個對象不再被引用,那么這個對象會被GC回收。如果兩個對象無干擾的互相引用,那么這兩個對象也會被回收。

總結(jié):

1、首先定義a時,創(chuàng)建了a的作用域鏈(scope chain)

2、(var b=a())執(zhí)行a時,創(chuàng)建作用域a.scope=a,并創(chuàng)建callObject對象添加a的作用域中

3、a對象上添加了arguments屬性,并將i和return函數(shù)賦值給活動對象

4、執(zhí)行a時將b指向了a的ruturn函數(shù)值,在b中又引用的a中的局部變量i,因此不符合GC的回收標(biāo)準(zhǔn),活動對象a沒有被回收,因此b訪問i是第一次訪問的對象,并且只有在b中才能訪問

相關(guān)文章

  • JavaScript中的函數(shù)模式詳解

    JavaScript中的函數(shù)模式詳解

    這篇文章主要介紹了JavaScript中的函數(shù)模式詳解,本文講解了創(chuàng)建函數(shù)的語法、函數(shù)表達(dá)式、命名函數(shù)表達(dá)式、函數(shù)的聲明、函數(shù)聲明與表達(dá)式、函數(shù)的提升、即時函數(shù)模式等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • JavaScript實現(xiàn)動態(tài)時鐘效果

    JavaScript實現(xiàn)動態(tài)時鐘效果

    這篇文章主要介紹了JavaScript實現(xiàn)動態(tài)時鐘效果,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-06-06
  • JS實現(xiàn)iframe自適應(yīng)高度的方法示例

    JS實現(xiàn)iframe自適應(yīng)高度的方法示例

    這篇文章主要介紹了JS實現(xiàn)iframe自適應(yīng)高度的方法,結(jié)合實例形式分析了JS實現(xiàn)iframe高度自適應(yīng)的實現(xiàn)技巧,并給出了項目示例供大家參考,需要的朋友可以參考下
    2017-01-01
  • js-窮舉法 (y0h)

    js-窮舉法 (y0h)

    js-窮舉法 (y0h)...
    2006-09-09
  • 微信小程序頁面間跳轉(zhuǎn)傳參方式總結(jié)

    微信小程序頁面間跳轉(zhuǎn)傳參方式總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于微信小程序頁面間跳轉(zhuǎn)傳參方式,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 小程序按鈕避免多次調(diào)用接口和點擊方案實現(xiàn)(不用showLoading)

    小程序按鈕避免多次調(diào)用接口和點擊方案實現(xiàn)(不用showLoading)

    這篇文章主要介紹了小程序按鈕避免多次調(diào)用接口和點擊方案實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • JavaScript實現(xiàn)拖拽簡單效果

    JavaScript實現(xiàn)拖拽簡單效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)拖拽簡單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JS數(shù)據(jù)結(jié)構(gòu)與算法中的隊列結(jié)構(gòu)詳解

    JS數(shù)據(jù)結(jié)構(gòu)與算法中的隊列結(jié)構(gòu)詳解

    隊列指的是一種受限的線性表,先進(jìn)先出,今天通過本文帶領(lǐng)大家認(rèn)識隊列及隊列的應(yīng)用,對JS數(shù)據(jù)結(jié)構(gòu)與算法-隊列結(jié)構(gòu)相關(guān)知識感興趣的朋友一起看看吧
    2022-11-11
  • javascript 判斷用戶有沒有操作頁面

    javascript 判斷用戶有沒有操作頁面

    這篇文章主要介紹了javascript 判斷用戶有沒有操作頁面的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 解決layer.confirm選擇完之后消息框不消失的問題

    解決layer.confirm選擇完之后消息框不消失的問題

    今天小編就為大家分享一篇解決layer.confirm選擇完之后消息框不消失的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評論