Javascript';s调用堆栈并执行命令

Javascript';s调用堆栈并执行命令,javascript,stack,call,Javascript,Stack,Call,我正在学习调用堆栈,我知道它是按“先进先出”的顺序执行的,但为什么JS代码是按从上到下的顺序执行的呢?调用堆栈中的最后一项(即弹出的第一项)不应该首先执行吗?如果不是非常专业,请考虑以下代码 function squared(value) { return value * value; } function cube(value) { return squared(value) * value; } cube(3); 现在,当调用函数cube时,很明显,要让函数cube返回它的计算

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

如果不是非常专业,请考虑以下代码

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

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

cube(3);
现在,当调用函数
cube
时,很明显,要让函数
cube
返回它的计算值,它应该首先计算
squared
的值,然后乘以返回的值

这就是为什么总是先执行内部函数,然后再执行外部函数的原因,因为外部函数可能取决于内部函数返回的值

将其转换为堆栈,调用堆栈如下所示

  • 初始空堆栈
  • 调用函数
    cube
    时,将其插入堆栈中
  • 当函数
    cube
    调用函数
    squared
    时,
    squared
    被插入堆栈
  • squared
    不再调用任何函数,因此从堆栈中弹出函数
    squared
    ,执行该函数,并将值返回到
    cube
  • 函数
    cube
    从堆栈中弹出,执行,并将值返回给调用程序

  • 这是一个非常简单的解释,解释了为什么堆栈用于函数调用,并且在所有编程语言中都有使用。

    在执行代码时,哪种语言不是从上到下顺序执行的?关于堆栈,你应该先看一下基本的数据结构。这个很棒的工具将演示调用堆栈是如何工作的:乐意帮忙……)
     |  |
      --
    
    |cube|
     ----
    
    |squared|
    | cube  |
     -------
    
    |cube| //squared()
     ----
    
    |   | // cube() * returned value from squared()
     ---