我需要使用JavaScript执行一些递归操作。
JavaScript引擎是否像Java一样工作?对于递归,Java在每次递归调用时都会启动一个新堆栈。 JavaScript如何处理这个问题?
答案 0 :(得分:4)
ECMAscript 没有尾部优化的概念......但是,如果那是问题吗?
尾部优化是什么意思?
这意味着不再需要堆栈帧 递归调用,因此可能被删除
这反过来意味着,因为在该主题上没有正式的规范,它几乎取决于解释器如何处理这个问题。可能会有一些优化正在进行(V8?),但更好地假设JS递归根本没有得到优化。
答案 1 :(得分:1)
是的,每次递归调用都会创建一个新的堆栈条目