JavaScript是否在每次递归调用时启动一个新的堆栈?

Does JavaScript start a new stack on every recursive call?

本文关键字:一个 堆栈 启动 是否 递归 调用 JavaScript      更新时间:2023-09-26

我需要使用JavaScript执行一些递归操作。

JavaScript引擎像Java一样工作吗?对于递归,Java在每次递归调用时启动一个新的堆栈。JavaScript是如何处理的呢?

ECMAscript没有尾部优化的概念…然而,如果这就是问题所在呢?

尾部优化是什么意思?

表示堆栈帧在点不再需要递归调用,因此可以消除

这反过来意味着,由于没有关于该主题的官方规范,因此如何处理它基本上取决于解释器。可能有一些优化在幕后进行(V8 ?),但最好假设JS递归根本没有得到优化。

是的,每次递归调用都会创建一个新的堆栈条目

相关文章: