gpt4 book ai didi

Javascript调用栈和执行顺序

转载 作者:行者123 更新时间:2023-12-04 08:56:53 25 4
gpt4 key购买 nike

我正在学习调用堆栈,我知道它是“先进后出”的顺序,但为什么 JS 代码按自上而下的顺序执行?调用堆栈中的最后一项(即要弹出的第一项)不应该先执行吗?

最佳答案

没有太技术性,想想下面的代码,

function squared(value) {
return value * value;
}

function cube(value) {
return squared(value) * value;
}

cube(3);
现在,当函数 cube被调用,很明显,对于函数 cube要返回它的计算值,它应该计算 squared 的值首先乘以返回的值。
这就是为什么总是先执行内部函数,然后执行外部函数的原因,因为外部函数可能依赖于内部函数的返回值。
将其转换为堆栈,调用堆栈将如下所示
  • 初始空栈。
  •  |  |
    --
  • 当函数 cube被调用,它被插入到堆栈中。
  • |cube|
    ----
  • 当函数 cube调用函数 squared , squared被插入堆栈。
  • |squared|
    | cube |
    -------
  • squared不再调用任何函数,所以函数 squared从堆栈中弹出,执行并将值返回到 cube
  • |cube| //squared()
    ----
  • 功能 cube从堆栈中弹出,执行并将值返回给调用者。
  • |   | // cube() * returned value from squared()
    ---
    这几乎是一个非常简单的解释为什么堆栈用于函数调用并且几乎在所有编程语言中使用。

    关于Javascript调用栈和执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63773049/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com