JavaScript核心概念 - 執行環境與執行堆疊

執行環境

我們在撰寫 function 原始碼時,就已經定義好它的作用域了,不過要等到我們去執行它時,它才會建立一個執行環境,而有這個執行環境時 function 作用域才有屬於它的變數。執行環境會在每次調用函式時建立,這個執行環境會有限制作用域及產生 this 的特性。那麼最外層呢?最外層當然就是我們的全域執行環境,這個全域執行環境會在我們一開始使用瀏覽器 or Node.js 開啟時即建立(this 會指向 window or global)。

執行堆疊(Execution stack)

這邊我們可以參照下面原始碼範例,當我們開啟瀏覽器進入畫面時,會先建立一個全域執行環境,然後我們執行 doSomething() ,此時會建立一個 doSomething() 的執行環境堆疊在全域上,接下來再調用 sayHi() 時, sayHi() 再建立一個執行環境堆的上去,形成執行環境的堆疊,最後當執行 sayHi() 執行完畢時則撤掉其執行環境,再接著撤掉 doSomething() 的執行環境,也結束我們的程式碼執行。

1
2
3
4
5
6
7
8
9
function sayHi(name) {
var greeting = 'hi';
return greeting + ' ' + name;
}
function doSomething() {
var person = 'ASin';
console.log(sayHi(person));
}
doSomething();
0%