JavaScript 的執行環境(Execution Contexts)
什麼是執行環境(Execution Contexts)?
A wrapper to help manage the code that is running.
執行環境(Execution Contexts)決定現在要執行的是哪一段程式碼。
Javascript 會建立兩種執行環境:
- 全域執行環境(Global Execution Contexts)
- 函式執行環境(Function Execution Contexts)
全域執行環境(Global Execution Contexts)
當程式被啟動時,JavaScript 引擎會自動建立全域執行環境。這個全域執行環境會自動生成兩個東西:
- 全域物件(Global Object)。如果以瀏覽器來說,這個全域物件指的就會是
window
。 - 建立
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 協議 ,轉載請註明出處!