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

首頁(yè) > 網(wǎng)站 > WEB開(kāi)發(fā) > 正文

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

2024-04-27 15:17:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
原文地址:http://www.cnblogs.com/wangfupeng1988/p/3989357.html

繼續(xù)上文的內(nèi)容。

執(zhí)行全局代碼時(shí),會(huì)產(chǎn)生一個(gè)執(zhí)行上下文環(huán)境,每次調(diào)用函數(shù)都又會(huì)產(chǎn)生執(zhí)行上下文環(huán)境。當(dāng)函數(shù)調(diào)用完成時(shí),這個(gè)上下文環(huán)境以及其中的數(shù)據(jù)都會(huì)被消除,再重新回到全局上下文環(huán)境。處于活動(dòng)狀態(tài)的執(zhí)行上下文環(huán)境只有一個(gè)。

其實(shí)這是一個(gè)壓棧出棧的過(guò)程——執(zhí)行上下文棧。如下圖:

 

可根據(jù)以下代碼來(lái)詳細(xì)介紹上下文棧的壓棧、出棧過(guò)程。

如上代碼。

在執(zhí)行代碼之前,首先將創(chuàng)建全局上下文環(huán)境。

然后是代碼執(zhí)行。代碼執(zhí)行到第12行之前,上下文環(huán)境中的變量都在執(zhí)行過(guò)程中被賦值。

執(zhí)行到第13行,調(diào)用bar函數(shù)。

跳轉(zhuǎn)到bar函數(shù)內(nèi)部,執(zhí)行函數(shù)體語(yǔ)句之前,會(huì)創(chuàng)建一個(gè)新的執(zhí)行上下文環(huán)境。

并將這個(gè)執(zhí)行上下文環(huán)境壓棧,設(shè)置為活動(dòng)狀態(tài)。

執(zhí)行到第5行,又調(diào)用了fn函數(shù)。進(jìn)入fn函數(shù),在執(zhí)行函數(shù)體語(yǔ)句之前,會(huì)創(chuàng)建fn函數(shù)的執(zhí)行上下文環(huán)境,并壓棧,設(shè)置為活動(dòng)狀態(tài)。

 

待第5行執(zhí)行完畢,即fn函數(shù)執(zhí)行完畢后,此次調(diào)用fn所生成的上下文環(huán)境出棧,并且被銷(xiāo)毀(已經(jīng)用完了,就要及時(shí)銷(xiāo)毀,釋放內(nèi)存)。

同理,待第13行執(zhí)行完畢,即bar函數(shù)執(zhí)行完畢后,調(diào)用bar函數(shù)所生成的上下文環(huán)境出棧,并且被銷(xiāo)毀(已經(jīng)用完了,就要及時(shí)銷(xiāo)毀,釋放內(nèi)存)。

 

好了,我很耐心的給大家介紹了一段簡(jiǎn)短代碼的執(zhí)行上下文環(huán)境的變化過(guò)程,一個(gè)完整的閉環(huán)。其中上下文環(huán)境的變量賦值過(guò)程我省略了許多,因?yàn)槟切┎⒉浑y,一看就知道。

 

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

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


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五台县| 乐东| 嘉义市| 通化市| 唐山市| 怀远县| 揭西县| 遵义县| 儋州市| 双柏县| 喀什市| 门头沟区| 大城县| 泾源县| 平昌县| 青冈县| 静宁县| 响水县| 贡山| 嘉祥县| 镇原县| 保亭| 新河县| 友谊县| 祁阳县| 桂阳县| 济源市| 大理市| 嵩明县| 喜德县| 夏邑县| 磴口县| 河间市| 江达县| 巢湖市| 阳原县| 忻州市| 五寨县| 南昌市| 翁源县| 台山市|