[英]Can JavaScript function call subexpressions be tail calls?
考虑以下返回语句:
return f() || g();
调用f()
显然不是尾调用,因为如果f()
是虚假的,则 function 实际上不会返回。
但是g()
部分呢,那是尾调用吗? 还是我必须像这样重写它:
const temp = f();
if (temp) return temp; else return g();
试试看?
出于某种原因,在我睡眠不足的情况下,我没有想到 state:D
function f() {
return Math.random() > 1 || f();
}
f()
节点说RangeError: Maximum call stack size exceeded
, Firefox 说InternalError: too much recursion
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.