【javaScript基礎】執行上下文

執行上下文棧

執行上下文棧,也就是環境棧。全局執行環境是最外圍的一個執行環境。在Web瀏覽器中,全局環境被認爲是window對象。javascript

var a = 1; // 全局執行環境
function fn () {};
fn(); // fn執行環境
複製代碼

每一個函數都有本身的執行環境。當進入一個執行環境時,該執行環境就會被推入一個環境棧中。而執行完當前執行環境,環境棧就會將當前執行環境彈出,把控制權返回給以前的執行環境。java

在環境棧彈出某個執行環境時,該環境會被銷燬,包括保存在其中全部定義的變量和函數。全局執行環境直到應用退出纔會被銷燬,例如關閉網頁或瀏覽器。瀏覽器

執行環境也叫執行上下文環境,環境棧也就是執行上下文棧。 函數

image

var a = 3; // 1.進入全局上下文環境
var fn = function () {
    var b = 5;
    var y = bar(a + b); // 3.進入函數bar上下文環境
    console.log(y);
}
var bar = function (c) {
    return c;
}
fn(2); // 2.進入函數fn上下文環境
複製代碼

一、在上述代碼中,首先進入全局上下文環境。執行fn函數時,壓棧並進入fn上下文環境。ui

二、在fn函數中,執行bar函數,壓棧並進入bar執行環境。此時fn沒有被銷燬,由於還沒執行結束。spa

三、bar函數執行結束,出棧並銷燬bar上下文環境。回到fn執行環境。3d

四、fn函數執行完畢,出棧並銷燬fn上下文環境。把控制權返回給全局上下文環境。code

image
相關文章
相關標籤/搜索