ES6 类 中的递归方法是否利用了 TCO(尾调用优化)?
Do recursive methods in ES6 classes take advantage of TCO (Tail Call Optimization)?
所以我读到 ECMAScript6 (ES6) 具有 TCO 能力。我已经看到这被证明为:(没有实际用途的粗略示例...)
const tcoFn = (acc) => {
if (acc > 10) {
return acc
} else {
return tcoFn(acc + 1)
}
}
我的问题是是否知道我们在 ES6 中获得 TCO class?所以,
class TCOish {
tcoMethod(acc) {
if (acc > 10) {
return acc
} else {
return tcoMethod(acc + 1)
}
}
} // End class definition
在互联网上进行了一些搜索后,我仍然不清楚这一点,我想知道是否有人可以指出我的明确答案?
另外值得注意的是,这将用于我们不关心浏览器或转译的 Node 应用程序。
谢谢。
所以,从 Andy 在上面的评论中提供的 link 看来,答案似乎还没有。这似乎是普遍正确的,除了 WebKit 在 TCO 领域领先一点。值得注意的是,随着 TCO 支持的增加,此 "answer" 的价值会随着时间的推移而降低。
所以我读到 ECMAScript6 (ES6) 具有 TCO 能力。我已经看到这被证明为:(没有实际用途的粗略示例...)
const tcoFn = (acc) => {
if (acc > 10) {
return acc
} else {
return tcoFn(acc + 1)
}
}
我的问题是是否知道我们在 ES6 中获得 TCO class?所以,
class TCOish {
tcoMethod(acc) {
if (acc > 10) {
return acc
} else {
return tcoMethod(acc + 1)
}
}
} // End class definition
在互联网上进行了一些搜索后,我仍然不清楚这一点,我想知道是否有人可以指出我的明确答案?
另外值得注意的是,这将用于我们不关心浏览器或转译的 Node 应用程序。
谢谢。
所以,从 Andy 在上面的评论中提供的 link 看来,答案似乎还没有。这似乎是普遍正确的,除了 WebKit 在 TCO 领域领先一点。值得注意的是,随着 TCO 支持的增加,此 "answer" 的价值会随着时间的推移而降低。