fredoverflow
考虑以下return语句:
return f() || g();
该调用f()
显然不是尾部调用,因为如果函数错误,该函数实际上不会返回f()
。
那g()
部分呢,那是尾声吗?还是我必须像这样重写它:
const temp = f();
if (temp) return temp; else return g();
user2357112支持Monica
是的,但是在实践中没有帮助。
根据标准,g()
在尾部位置:
LogicalORExpression:LogicalORExpression || 逻辑与表达式
使用参数调用返回LogicalANDExpression的HasCallInTailPosition。
但是,大多数浏览器不支持消除尾声,而Chromium团队也没有为此提供支持,因此无论您如何编写尾声,您都不能在实践中依靠尾声消除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句