[英]Javascript execution context order
首先,我调用 func1,因此它位于全局执行上下文之上。 然后它调用func2。 我想知道的是,在调用 func2 之后,func1 是立即返回还是退出执行堆栈? 或者是这样,首先 func2 位于 func1 执行上下文之上,它返回然后 func1 返回,最后我们回到全局执行上下文?
func1(); function func1 () { func2(); } function func2 () { const x = 2; }
函数调用是作为堆栈实现的。 当func1
,它会立即调用func2
。 当func2
返回时,它返回到func1
的作用域并从那里继续。 浏览器优化可能会意识到func2()
之后没有更多指令并跳过链备份,但这取决于实现。
在您的示例中, func1
可能会在调用func2()
后立即返回,因为没有其他代码要运行,但通常情况并非如此。 考虑
function func1() {
const message = "example";
func2();
console.log(message);
}
那么在弹出func2()
的执行上下文后func2()
从那里返回时func2()
,日志仍将在func1
的执行中运行。
执行上下文在一个堆栈(调用堆栈)中进行管理,并且一次只能推送和弹出一个。 弹出堆栈帧时,它会从堆栈帧被压入时停止的地方继续执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.