第五次作業 JS的執行上下文

2021-10-10 08:46:41 字數 1232 閱讀 7376

1、**開始執行,建立乙個全域性執行上下文來執行全域性**:

2、執行階段,變數賦值完成:

3、建立乙個新的函式執行上下文來執行該函式**:

4、函式變數賦值完成,執行上下文進入執行階段:

複製**

我們用偽**來描述上述**中執行上下文的建立過程:

複製**

globalexectioncontext =

outer: // 對外部環境的引用為null

},variableenvironment:

outer: // 對外部環境對引用為null}}

functionexectioncontext = ,

},outer: // 對外部環境對引用

},variableenvironment: ,

outer: // 對外部環境對引用}}

不知道你有沒有發現,在執行上下文建立階段,函式宣告與var宣告的變數在建立階段已經被賦予了乙個值,var宣告被設定為了undefined,函式被設定為了自身函式,而let const被設定為未初始化。

現在你總知道變數提公升與函式宣告提前是怎麼回事了吧,以及為什麼let const為什麼有暫時性死域,這是因為作用域建立階段js引擎對兩者初始化賦值不同。

上下文除了建立階段外,還有執行階段,這點大家應該好理解,**執行時根據之前的環境記錄對應賦值,比如早期var在建立階段為undefined,如果有值就對應賦值,像let const值為未初始化,如果有值就賦值,無值則賦予undefined。

js執行上下文與執行上下文棧

在了解js的執行上下文物件與執行上下文棧之前,我們要先了解兩個概念 即變數提公升跟函式提公升 變數提公升 通過var定義的變數,在定義語句之前我們就可以直接訪問到,不過它的值是undefined 函式提公升 通過function定義的函式,在函式定義語句前,我們就可以直接呼叫 變數提公升與函式提公升...

JS執行上下文

執行上下文,即context,也不知道是誰翻譯的,不少的文獻 書籍用的都是這個詞。還記得第一次接觸這個詞時的惆悵 迷惘 不知所措,扶了扶眼鏡,翻開大辭典,還是翻譯成環境比較接地氣。js執行上下文,即js的執行環境。當我們的 執行時,會進入到不同的執行上下文,即不同的環境。在不同的環境中,有著不同的 ...

JS的執行上下文

執行上下文時是 執行時的環境,js 在執行前進行編譯,那麼會生成兩部分,一部分是可執行的 而另一部分則是執行上下文。用於跟蹤 執行的運 況。執行步驟如下 全域性執行上下文 函式執行上下文和 eval 執行上下文 執行上下文所包含的內容是在不斷的變化的。它主要分為了三個不同的階段。分別是es3階段,e...