摘要:具體表現(xiàn)為執(zhí)上下棧瀏覽器中的解釋器是單線程的,相當(dāng)于瀏覽器中同時(shí)間只能做個(gè)事情。代碼中只有個(gè)全局執(zhí)上下,和數(shù)個(gè)函數(shù)執(zhí)上下,這些組成了執(zhí)上下棧。個(gè)函數(shù)的執(zhí)上下,在函數(shù)執(zhí)完畢后,會(huì)被移出執(zhí)上下棧。逗號(hào)表達(dá)式只返回最后一項(xiàng)。
執(zhí)?上下?
當(dāng)函數(shù)執(zhí)?時(shí),會(huì)創(chuàng)建?個(gè)稱為執(zhí)?上下?(execution contex)的環(huán)境,分為創(chuàng)建和執(zhí)?2個(gè)階段
創(chuàng)建階段,指函數(shù)被調(diào)?但還未執(zhí)?任何代碼時(shí),此時(shí)創(chuàng)建了?個(gè)擁有3個(gè)屬性的對(duì)象:
executionContext = { scopeChain: {}, // 創(chuàng)建作?域鏈(scope chain) variableObject: {}, // 初始化變量、函數(shù)、形參 this: {} // 指定this }
代碼執(zhí)?階段主要的?作是:1、分配變量、函數(shù)的引?,賦值。2、執(zhí)?代碼。
在javascript創(chuàng)建階段會(huì)出現(xiàn)變量提升(Hoisting)。
具體表現(xiàn)為:
function demo(){ console.log(a); } demo();
function demo(){ console.log(a); var a = 2; } demo();
執(zhí)?上下?棧
瀏覽器中的JS解釋器是單線程的,相當(dāng)于瀏覽器中同?時(shí)間只能做?個(gè)事情。
代碼中只有?個(gè)全局執(zhí)?上下?,和?數(shù)個(gè)函數(shù)執(zhí)?上下?,這些組成了執(zhí)?上下?棧(Execution Stack)。
?個(gè)函數(shù)的執(zhí)?上下?,在函數(shù)執(zhí)?完畢后,會(huì)被移出執(zhí)?上下?棧。
具體表現(xiàn)為:
function c(){ console.log("hello world"); } function a(){ function b(){ c(); } b(); } a(); | c() | | b() | | a() | | gobal | ----------
它是一個(gè)棧型的,先執(zhí)行的先進(jìn)去后結(jié)束,后進(jìn)去的先結(jié)束。
逗號(hào)表達(dá)式只返回最后一項(xiàng)。var a = (0,1,2,3); a = 3;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106372.html
摘要:什么是中的調(diào)用棧調(diào)用棧就像是程序當(dāng)前執(zhí)行的日志。當(dāng)函數(shù)執(zhí)行結(jié)束時(shí),將從調(diào)用棧中出去。了解全局和局部執(zhí)行上下文是掌握作用域和閉包的關(guān)鍵??偨Y(jié)引擎創(chuàng)建執(zhí)行上下文,全局存儲(chǔ)器和調(diào)用棧。 原文作者:Valentino 原文鏈接:https://www.valentinog.com/blog/js-execution-context-call-stack 什么是Javascript中的執(zhí)行上下文...
摘要:本計(jì)劃一共期,每期重點(diǎn)攻克一個(gè)面試重難點(diǎn),如果你還不了解本進(jìn)階計(jì)劃,點(diǎn)擊查看前端進(jìn)階的破冰之旅本期推薦文章深入之執(zhí)行上下文棧和深入之變量對(duì)象,由于微信不能訪問外鏈,點(diǎn)擊閱讀原文就可以啦。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第二天。 本計(jì)劃一共28期,每期...
摘要:執(zhí)行上下文和執(zhí)行棧是中關(guān)鍵概念之一,是難點(diǎn)之一。理解執(zhí)行上下文和執(zhí)行棧同樣有助于理解其他的概念如提升機(jī)制作用域和閉包等。函數(shù)執(zhí)行完成,函數(shù)的執(zhí)行上下文出棧,并且被銷毀。 前言 如果你是一名 JavaScript 開發(fā)者,或者想要成為一名 JavaScript 開發(fā)者,那么你必須知道 JavaScript 程序內(nèi)部的執(zhí)行機(jī)制。執(zhí)行上下文和執(zhí)行棧是JavaScript中關(guān)鍵概念之一,是Ja...
摘要:執(zhí)行上下文和執(zhí)行棧是中關(guān)鍵概念之一,是難點(diǎn)之一。理解執(zhí)行上下文和執(zhí)行棧同樣有助于理解其他的概念如提升機(jī)制作用域和閉包等。函數(shù)執(zhí)行完成,函數(shù)的執(zhí)行上下文出棧,并且被銷毀。 前言 如果你是一名 JavaScript 開發(fā)者,或者想要成為一名 JavaScript 開發(fā)者,那么你必須知道 JavaScript 程序內(nèi)部的執(zhí)行機(jī)制。執(zhí)行上下文和執(zhí)行棧是JavaScript中關(guān)鍵概念之一,是Ja...
摘要:在中,通過棧的存取方式來管理執(zhí)行上下文,我們可稱其為執(zhí)行棧,或函數(shù)調(diào)用棧。而處于棧頂?shù)氖钱?dāng)前正在執(zhí)行函數(shù)的執(zhí)行上下文,當(dāng)函數(shù)調(diào)用完成后,它就會(huì)從棧頂被推出理想的情況下,閉包會(huì)阻止該操作,閉包后續(xù)文章深入詳解。 寫在開篇 已經(jīng)不敢自稱前端小白,曾經(jīng)吹過的牛逼總要一點(diǎn)點(diǎn)去實(shí)現(xiàn)。 正如前領(lǐng)導(dǎo)說的,自己喝酒吹過的牛皮,跪著都得含著淚去實(shí)現(xiàn)。 那么沒有年終完美總結(jié),來個(gè)新年莽撞開始可好。 進(jìn)擊巨...
閱讀 3056·2021-09-22 15:52
閱讀 2923·2019-08-30 15:55
閱讀 2718·2019-08-30 15:53
閱讀 2465·2019-08-30 13:21
閱讀 1636·2019-08-30 13:10
閱讀 2496·2019-08-26 12:09
閱讀 2582·2019-08-26 10:33
閱讀 1818·2019-08-23 18:06