7 执行上下文 - cw84973570/Learning-notes GitHub Wiki

https://github.com/mqyqingfeng/Blog/issues/8

var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f();
}
checkscope();

执行全局代码,创建全局执行上下文,将其压入到执行上下文栈。

全局上下文初始化。

同时创建Checkscope函数,创建Checkscope.[scope](/cw84973570/Learning-notes/wiki/scope)属性,将其父变量对象保存到该属性,也就是父级作用域中存在的。

执行checkscope函数,创建checkscope执行上下文,将其压入到执行上下文栈,

初始化checkscope执行上下文,创建活动对象、作用域和this。

[scope](/cw84973570/Learning-notes/wiki/scope)设置为作用域的值,并将变量对象压入到作用域前端。

执行代码,创建f函数,创建f.[scope](/cw84973570/Learning-notes/wiki/scope)属性,将其父变量对象保存到该属性。

执行f函数,创建f执行上下文,将其压入到执行上下文栈。

初始化f执行上下文栈,创建变量对象、作用域和this。

[scope](/cw84973570/Learning-notes/wiki/scope)设置为作用域的值,并将活动对象压入到作用域前端。

执行完毕函数f将其执行上下文从执行上下文栈中弹出。

执行完毕函数checkscope将其执行上下文从执行上下文栈中弹出。