gpt4 book ai didi

javascript - 如何在 ES6 中递归地编写箭头函数?

转载 作者:行者123 更新时间:2023-11-28 07:44:44 25 4
gpt4 key购买 nike

ES6 中的箭头函数没有 arguments 属性,因此 arguments.callee 将不起作用,而且在严格模式下也不起作用,即使只是一个匿名函数正在使用中。

箭头函数无法命名,因此不能使用命名函数表达式技巧。

那么...如何编写递归箭头函数?那是一个箭头函数,它根据某些条件等递归地调用自身?

最佳答案

编写递归函数而不命名它是一个与计算机科学本身一样古老的问题(实际上甚至更古老,因为 λ 演算早于计算机科学),因为在 λ 演算中所有函数是匿名的,但你仍然需要递归。

解决方案是使用定点组合器,通常是 Y 组合器。这看起来像这样:

(y => 
y(
givenFact =>
n =>
n < 2 ? 1 : n * givenFact(n-1)
)(5)
)(le =>
(f =>
f(f)
)(f =>
le(x => (f(f))(x))
)
);

这将递归计算 5 的阶乘。

注意:代码很大程度上基于此:The Y Combinator explained with JavaScript 。所有功劳均应归原作者所有。我主要只是“协调”(这就是你所说的用 ES/Harmony 的新功能重构旧代码吗?)。

关于javascript - 如何在 ES6 中递归地编写箭头函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27566549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com