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

时间:2013-06-18 10:28:51

标签: javascript recursion

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

JavaScript引擎是否像Java一样工作?对于递归,Java在每次递归调用时都会启动一个新堆栈。 JavaScript如何处理这个问题?

2 个答案:

答案 0 :(得分:4)

ECMAscript 没有尾部优化的概念......但是,如果那是问题吗?

尾部优化是什么意思?

  

这意味着不再需要堆栈帧   递归调用,因此可能被删除

这反过来意味着,因为在该主题上没有正式的规范,它几乎取决于解释器如何处理这个问题。可能会有一些优化正在进行(V8?),但更好地假设JS递归根本没有得到优化。

答案 1 :(得分:1)

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