JS 核心篇 (3) JS 的執行環境
執行環境
當我們宣告一個函式時,作用域就已經被確定,但此時還沒有變數產生。
當函式被執行,變數才產生,並產生一個執行環境
,當函式反覆被執行,會產生多個執行環境
。執行環境
會有限作用域的功能,並且有自己的this。
全域環境
除了函式有執行環境,全域也有全域執行環境。全域環境是在網頁一開啟或後端nodeJS一開啟就建立了。全域執行環境產生後會:
- 瀏覽器: 產生 window 變數,還有一個 this(等於 window)。
- nodeJS: 產生 global 變數, 還有一個 this(等於 global)。
執行堆疊 (call stack)
當多個函式被執行時,依照執行的順序,執行環境會往上堆疊。
全域環境 => dosomething 環境 => sayHi 環境
當函式跑完後則依序離開
sayHi 環境離開 => dosomething 環境離開 => 回到全域執行環境
blowing the stack
當我們寫了一個遞回函式時,也就是 function 不斷呼叫function 本身,瀏覽器會產生 maximum call 錯誤。