js深入淺出執行上下文筆記

2021-08-18 02:31:06 字數 633 閱讀 8882

一,執行上下文是乙個棧級結構,並且隨著函式的重複呼叫,會重複建立新的執行上下文。

二,變數物件(vo)是乙個抽象概念中的「物件」,它用於儲存執行上下文的變數,函式宣告, 函式引數。

三,執行上下文可以認為是**的執行環境。當**被載入時,js直譯器建立乙個全域性的執行上下文。當函式執行時,會建立函式的執行上下文。

js直譯器的工作流程如下:

1.建立乙個後進先出的執行上下文的棧;

2.接著建立全域性的執行上下文,並壓入棧中;

3.當呼叫函式時,會建立函式的執行上下文,並壓入棧中;

4.當函式執行完畢,位於棧頂的函式執行上下文被彈出,並執行新的位於棧頂的執行上下文;

四,執行上下文的建立分為兩個階段:

1.建立階段(將變數,函式宣告以及函式引數組成乙個活動物件vo(可變物件)(變數物件));

建立vo——》填充函式引數——》填充函式宣告(衝突覆蓋)——》填充變數宣告(衝突忽略)

2.執行階段(解釋**);

因此,變數和函式宣告會被提前,並且函式表示式並不會被vo(相當於函式的啟用物件ao)記錄,

var e=function _e(){}//_e並不會記錄在ao,故_e這個函式物件並不能在所在函式的作用域內被拿到

深入 執行上下文

在 深入 詞法作用域與動態作用域 中,提出這樣一道思考題 var scope global scope function checkscope return f checkscope var scope global scope function checkscope return f checks...

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

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

JS執行上下文

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