麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

Javascript 設計模式(二) 閉包

2024-05-06 14:09:50
字體:
來源:轉載
供稿:網友
正文

閉包的概念:

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

最常見的閉包


代碼如下:
function a() {
var i=0;
return function(){
alert(i++);
}
}
var b=a();
for(var i=0;i<3;i++){
b();
}


解釋上面代碼前,先接受一個函數的創建和執行過程

第一步:定義函數,設置環境,創建作用域鏈(scope chain)現a為全局變量,則a的作用域鏈中只有window

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

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

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

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

總結:

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

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

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

4、執行a時將b指向了a的ruturn函數值,在b中又引用的a中的局部變量i,因此不符合GC的回收標準,活動對象a沒有被回收,因此b訪問i是第一次訪問的對象,并且只有在b中才能訪問
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 999精品国产 | 国产一级毛片高清视频 | 一级黄色片武则天 | 亚洲国产成人久久一区www妖精 | 欧美精品一区二区三区久久久 | 黄色大片大毛片 | 欧美自拍三区 | 精品国产一区二区三区蜜殿 | 亚洲精品久久久久久久久久 | 国产午夜精品在线 | 激情久久免费视频 | 7777网站| 国产三级精品最新在线 | 99影视在线视频免费观看 | 亚洲免费网站 | 免费在线观看毛片视频 | 久久综合给合久久狠狠狠97色69 | 国产999精品久久久久 | 欧美性a视频 | 日本精品视频一区二区三区四区 | 销魂美女一区二区 | 国产电影精品久久 | 日韩视频区 | 欧美精品成人 | 成人在线视频在线观看 | 国产精品一区二区三区在线看 | 欧美成人精品一区二区三区 | 91在线视频导航 | 亚洲成人激情av | 久久成人免费观看 | 羞羞网站在线看 | 97黄色网| 久久另类视频 | 精品久久久久久久久亚洲 | 天天碰夜夜操 | 国产免费乱淫av | 日韩黄站| 国产成人午夜高潮毛片 | 在线看毛片的网站 | 日日夜av | 免费小毛片 |