【发布时间】:2021-01-21 22:44:36
【问题描述】:
考虑以下返回语句:
return f() || g();
调用f() 显然不是尾调用,因为如果f() 是假的,函数实际上并没有返回。
g() 部分呢,那是尾声吗?还是我必须像这样重写它:
const temp = f();
if (temp) return temp; else return g();
【问题讨论】:
-
试试看? “我必须……”
-
在实践中没关系。无论标准怎么说,只有 Safari 真正支持尾调用优化。
-
JS 编码人员不应该担心实现细节,因为这些细节经常会发生变化;这里的实际问题/问题是什么?
-
@dandavis:消除尾声很重要。
-
@dandavis:尾调用消除允许程序设计在没有尾调用消除的情况下无法工作。这不是实现细节。
标签: javascript tail-recursion tail-call-optimization