Javascript';s调用堆栈并执行命令
我正在学习调用堆栈,我知道它是按“先进先出”的顺序执行的,但为什么JS代码是按从上到下的顺序执行的呢?调用堆栈中的最后一项(即弹出的第一项)不应该首先执行吗?如果不是非常专业,请考虑以下代码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返回它的计算
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()
---