執行環境
我們在撰寫 function 原始碼時,就已經定義好它的作用域了,不過要等到我們去執行它時,它才會建立一個執行環境,而有這個執行環境時 function 作用域才有屬於它的變數。執行環境會在每次調用函式時建立,這個執行環境會有限制作用域及產生 this 的特性。那麼最外層呢?最外層當然就是我們的全域執行環境,這個全域執行環境會在我們一開始使用瀏覽器 or Node.js 開啟時即建立(this 會指向 window or global)。
執行堆疊(Execution stack)
這邊我們可以參照下面原始碼範例,當我們開啟瀏覽器進入畫面時,會先建立一個全域執行環境,然後我們執行 doSomething()
,此時會建立一個 doSomething()
的執行環境堆疊在全域上,接下來再調用 sayHi()
時, sayHi()
再建立一個執行環境堆的上去,形成執行環境的堆疊,最後當執行 sayHi()
執行完畢時則撤掉其執行環境,再接著撤掉 doSomething()
的執行環境,也結束我們的程式碼執行。


1 | function sayHi(name) { |