执行上下文的理解:https://juejin.im/post/6844903682283143181
看一下这两题:
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()();
个人理解:
第一个返回的是f(),第二个返回的是f,所以第二个调用是checkscope()();
为什么执行上下文顺序不同?
第一个执行函数的时候,先把checkscope放进栈,然后执行就出栈,而子函数f()在checkscoped内部,所以同样跟随checkscope()执行。
第二个执行函数的时候,第一个()返回的是fn,这时候checkscope放进栈,然后执行就出栈,之后fh()放进栈,然后执行就出栈。
网友评论