国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

談談我對JavaScript原型和閉包系列理解(隨手筆記8)

2019-11-20 10:56:48
字體:
來源:轉載
供稿:網友

在上篇文章給大家介紹了《談談我對JavaScript原型和閉包系列理解(隨手筆記6)》, 談談我對JavaScript原型和閉包系列理解(隨手筆記9)     可以點擊了解詳情。

執行上下文棧

執行全局代碼時,會產生一個執行上下文環境,每次調用函數都又會產生執行上下文環境。當函數調用完成時,這個上下文環境以及其中的數據都會被消除,再重新回到全局上下文環境。處于活動狀態的執行上下文環境只有一個。

壓棧出棧過程----執行上下文棧:

var a = 10,    //1. 進入全局上下文環境  fn,  bar = function(x) {   var b = 5;   fn(x + b); //3. 進入fn函數上下文  };fn = function(y) { var c = 5; console.log(y + c);};bar(10);    //2. 進入bar函數上下文環境 

1、在執行之前,首先創建全局上下文環境

 

2、代碼執行,執行到bar(10)之前,全局上下文中的變量在執行過程中被賦值。

 

3、執行到bar(10)調用bar函數,同時創建該函數內部的執行上下文環境

 

4、這時候該執行上下文環境進行壓棧,設置為活動狀態

 

5、bar函數執行到fn(x + b),調用fn函數,創建了fn函數的執行上下文,并壓棧,設置為活動狀態

 

6、fn函數執行完畢,fn環境出棧,被銷毀,釋放內存,bar函數變為活動態

 

7、fn函數執行完畢并銷毀,意味著bar也執行完畢了,此時bar函數環境出棧,并銷毀。全局環境變為活動態。

 

到這里這一段代碼的執行過程就完畢了。

根據原作者的描述:

其中上下文環境的變量賦值過程我省略了許多,因為那些并不難,一看就知道。

的確!代碼的大概執行過程跑完后,就能很清楚的知道各個執行環境中的變量是個怎樣的狀態。

講到這里,我不得不很遺憾的跟大家說:其實以上我們所演示的是一種比較理想的情況。有一種情況,而且是很常用的一種情況,無法做到這樣干凈利落的說銷毀就銷毀。這種情況就是偉大的――閉包。要說閉包,咱們還得先從自由變量和作用域說起。

以上內容是小編給大家分享我對JavaScript原型和閉包系列理解(隨手筆記8),希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛宁县| 利辛县| 和平县| 瑞昌市| 浦东新区| 阿合奇县| 吉首市| 湛江市| 工布江达县| 开江县| 禄丰县| 广汉市| 肃宁县| 时尚| 淮滨县| 沽源县| 遂宁市| 嘉祥县| 固始县| 甘肃省| 北安市| 工布江达县| 井冈山市| 平阳县| 从江县| 逊克县| 海宁市| 台山市| 永川市| 牡丹江市| 武山县| 五常市| 平南县| 嘉荫县| 江山市| 略阳县| 金湖县| 古蔺县| 甘南县| 常熟市| 芦山县|