函式作用域與執行上下文

2021-09-27 14:17:51 字數 857 閱讀 9004

1、**分類:全域性**和函式(區域性**)

**分為編譯(由js編譯器執行)階段和執行(js引擎執行)階段。當**被編譯時,會建立相應的作用域,當**被執行時,會建立相應的執行

上下文。

2、作用域:是在編譯階段就產生的,一整套函式識別符號的訪問規則,由函式宣告時所在的位置決定。

作用:主要用於隔離變數,不同的作用域中變數名字可以相同

作用域鏈:多個上下級關係作用域形成的鏈,由下向上或由內向外。定義了變數的查詢規則

3、執行上下文:

1)全域性執行上下文:執行全域性**前將window確定為全域性執行上下文,對全域性資料進行預處理。

-var宣告的變數,新增為window屬性

-function宣告的數,新增為window方法

-this賦值為window

-開始執行全域性**

2)函式執行上下文:在呼叫函式,執行函式體之前,建立對應的函式執行上下文,對區域性資料進行預處理

-實參賦值給形參,新增為執行上下文的屬性

-argument賦值實參,新增為函式執行上下文屬性

-var宣告的變數。賦值underfined,新增為函式執行上下文屬性

-function宣告的函式,新增為執行上下文的方法

-this->賦值呼叫當前函式的物件

-開始執行函式體

函式執行上下文棧:

-在全域性**執行前, js引擎就會建立乙個棧來儲存管理所有的執行上下文物件

-在全域性執行上下文(window)確定後, 將其新增到棧中(壓棧)

-在函式執行上下文建立後, 將其新增到棧中(壓棧)

-在當前函式執行完後,將棧頂的物件移除(出棧)

-當所有的**執行完後, 棧中只剩下window  

函式作用域與執行上下文

1 分類 全域性 和函式 區域性 分為編譯 由js編譯器執行 階段和執行 js引擎執行 階段。當 被編譯時,會建立相應的作用域,當 被執行時,會建立相應的執行 上下文。2 作用域 是在編譯階段就產生的,一整套函式識別符號的訪問規則,由函式宣告時所在的位置決定。作用 主要用於隔離變數,不同的作用域中變...

作用域與執行上下文

1.區別1 全域性作用域之外,每個函式都會建立自己的作用域,作用域在函式定義時就已經確定了,而不是在函式呼叫時 全域性執行上下文環境是在全域性作用域確定之後,js 馬上執行之前建立 函式執行上下文環境是在呼叫函式時,函式體 執行之前建立 2.區別2 作用域是靜態的,只要函式定義好了就一直存在,且不會...

作用域和執行上下文

當全域性 開始執行前,先建立全域性執行上下文環境 2.當全域性執行上下文環境建立好了以後將上下文中的所有內容放入棧記憶體 3.最先放入的在最下邊 global 4.其他執行的函式的執行上下文依次放入 放入的順序是 的執行順序 5.棧中最後放入的執行完最先出棧。6.1.除全域性作用域之外,每個函式都會...