JavaScript 的執行環境(Execution Contexts)

什麼是執行環境(Execution Contexts)?

A wrapper to help manage the code that is running.

執行環境(Execution Contexts)決定現在要執行的是哪一段程式碼。

Javascript 會建立兩種執行環境:

  1. 全域執行環境(Global Execution Contexts)
  2. 函式執行環境(Function Execution Contexts)

全域執行環境(Global Execution Contexts)

當程式被啟動時,JavaScript 引擎會自動建立全域執行環境。這個全域執行環境會自動生成兩個東西:

  1. 全域物件(Global Object)。如果以瀏覽器來說,這個全域物件指的就會是 window
  2. 建立 this,並將這個 this 指向全域物件。

什麼是 Global?
Not inside a function. The thing that is accessible everywhere to everything in the code.

函式執行環境(Function Execution Contexts)

當函式被調用的時候,會馬上建立一個新的執行環境。

執行環境怎麼運作?

執行環境的運作分為兩個階段,分別是:

  • 創建階段(Creation Phase)
  • 執行階段(Execution Phase)

創建階段(Creation Phase)

在創建階段,也就是在程式開始一行一行的執行之前,會先完成幾件事:

  • 建立執行環境物件與 this
  • 建立外部環境(Outer Envirenment)。如果是全域執行環境就不會有外部環境;但如果是函式執行環境,此時的外部環境就有可能是全域執行環境或另一個函式執行環境。
  • 變數及函式的宣告也會在這個階段先預留記憶體位置(Hoisted),並把被宣告的變數或函式放進執行環境物件裡面。

執行階段(Execution Phase)

在創建階段完成後會進入執行階段,這個階段開始會把程式碼逐行執行。

參考資料

文章內容如有錯誤,歡迎留言討論!


本 Blog 上的所有文章除特别聲明外,均採用 CC BY-SA 4.0 協議 ,轉載請註明出處!