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

首頁 > 網站 > WEB開發 > 正文

深入理解javascript原型和閉包(11)——執行上下文棧

2024-04-27 15:17:16
字體:
來源:轉載
供稿:網友
原文地址:http://www.cnblogs.com/wangfupeng1988/p/3989357.html

繼續上文的內容。

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

其實這是一個壓棧出棧的過程——執行上下文棧。如下圖:

 

可根據以下代碼來詳細介紹上下文棧的壓棧、出棧過程。

如上代碼。

在執行代碼之前,首先將創建全局上下文環境。

然后是代碼執行。代碼執行到第12行之前,上下文環境中的變量都在執行過程中被賦值。

執行到第13行,調用bar函數。

跳轉到bar函數內部,執行函數體語句之前,會創建一個新的執行上下文環境。

并將這個執行上下文環境壓棧,設置為活動狀態。

執行到第5行,又調用了fn函數。進入fn函數,在執行函數體語句之前,會創建fn函數的執行上下文環境,并壓棧,設置為活動狀態。

 

待第5行執行完畢,即fn函數執行完畢后,此次調用fn所生成的上下文環境出棧,并且被銷毀(已經用完了,就要及時銷毀,釋放內存)。

同理,待第13行執行完畢,即bar函數執行完畢后,調用bar函數所生成的上下文環境出棧,并且被銷毀(已經用完了,就要及時銷毀,釋放內存)。

 

好了,我很耐心的給大家介紹了一段簡短代碼的執行上下文環境的變化過程,一個完整的閉環。其中上下文環境的變量賦值過程我省略了許多,因為那些并不難,一看就知道。

 

講到這里,我不得不很遺憾的跟大家說:其實以上我們所演示的是一種比較理想的情況。有一種情況,而且是很常用的一種情況,無法做到這樣干凈利落的說銷毀就銷毀。這種情況就是偉大的——閉包。

要說閉包,咱們還得先從自由變量和作用域說起。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色成人小视频 | 国产免费传媒av片在线 | 精品亚洲一 | 在线播放中文 | av国产片| 国产大片全部免费看 | 国产一区二精品区在线 | 欧美精品色精品一区二区三区 | 国产九九九九 | 噜噜色av | 亚洲综合视频网 | 免费观看一级黄色片 | 国产精品视频亚洲 | 小视频在线看 | 久久免费观看一级毛片 | 欧美精品久久久久久久久久 | 日本在线播放一区二区三区 | 麻豆视频国产在线观看 | 国产精品一区二区三区99 | av老司机久久 | 99影视电影电视剧在线播放 | 中文字幕欧美视频 | 国产1区在线| 国产精品一区在线观看 | 久久伊人国产精品 | 久久精品中文字幕一区二区三区 | 久久国产28 | 精品国产一区二区三区久久久蜜月 | 天天黄色片 | 欧美日韩视频网站 | 亚洲小视频在线播放 | 特片网久久 | 免费特黄 | 一级观看免费完整版视频 | 免费午夜网站 | 日韩欧美高清一区 | 久久免费视频8 | 国产免费一区二区三区视频 | 精品久久久久久国产三级 | 91精品国产一区二区三区四区在线 | 中国免费一级毛片 |