amandakelake/blog

执行上下文

amandakelake opened this issue · 1 comments

原文
先看下两段代码的不同,再来分析执行上下文的不同

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

第一段代码的执行上下文栈

ECStack.push(globalContext);//先推入全局上下文
ECStack.push(checkscope);//checkscope上下文
ECStack.push(f);//f上下文
ECStack.pop();
ECStack.pop();
ECStack.pop();

第二段的

ECStack.push(globalContext);//先推入全局上下文
ECStack.push(checkscope);//checkscope上下文
ECStack.pop();
ECStack.push(f);//f上下文
ECStack.pop();
ECStack.pop();

是否可以理解为:函数的执行上下文是在被调用的时候创建的