繁体   English   中英

Javascript 执行上下文顺序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM