Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要使用 JavaScript 执行一些递归操作。
JavaScript 引擎是否像 Java 一样工作?对于递归,Java 在每次递归调用时都会启动一个新堆栈。JavaScript 如何处理这个问题?
ECMAscript没有尾部优化的概念......但是,如果那是问题吗?
尾部优化是什么意思?
这意味着在递归调用时不再需要堆栈帧,因此可能会被消除
这反过来意味着,由于没有关于该主题的官方规范,因此很大程度上取决于解释器如何处理这个问题。可能有一些优化在幕后进行(V8?),但最好假设 JS 递归根本没有得到优化。
是的,每个递归调用都会创建一个新的堆栈条目