函數呼叫與執行堆

函數呼叫 (Functoin Invocation) 與執行堆 (Execution Stack) 介紹

以下為一段最基礎的函示呼叫程式碼

1
2
3
4
5
6
7
function b() {}

function a() {
b();
}

a();

首先,在創造階段的時,函式 a 和 b 會被創造並記錄在記憶體中,接著到了執行階段程式程式碼會由上而下依序執行,a 被呼叫,再藉由 a 來呼叫 b

執行堆 (Execution Stack)

當函式被呼叫時,會創造一個獨立的執行環境放到執行堆的最上層,所以當 a 被呼叫時,就會基於全域環境放在其上層,如下圖所示

而當 a 被執行後呼叫內層的 b 又會再創造一個新的執行環境

直到 b 執行完畢離開執行堆後,繼續執行 a 尚未執行的任務,最後直到 a 也執行完畢離開執行堆,繼續由上而下依序執行全域環境的程式碼