【发布时间】:2018-01-27 21:23:39
【问题描述】:
我正在努力更好地理解 javascript 中的函数式编程,但我对我看到的映射函数的内容感到有些困惑。举个例子:
const f = x => (a, b, c) => b + a;
const arr = [1, 2, 3, 4, 5, 6];
const m = arr.map(f(1));
document.write(m);
当 f 返回 a 时,它将按预期打印每个值。如果它返回 b 它似乎返回索引,并且 c 将返回每个值的整个数组。这个函数为什么会这样工作有什么原因吗?
【问题讨论】:
-
这个函数没有任何意义。
x参数如果不在任何地方使用,它的意义何在?使用arr.map(() => arr)也可以达到同样的效果。 -
是的,x 被留下了,因为我正在玩传递事物并查看它如何影响其他元素。在这种情况下,为了简单起见,我只返回了 c。
-
请注意,这不是柯里化。
-
@Code-Apprentice 你能帮忙澄清为什么不是吗?对此很陌生,因此它可以帮助我弄清楚我的术语。以为是因为我在传递一个函数。
-
@user3591425 currying(在 JavaScript 的上下文中)是您将一个 arity > 1 的函数转换为一系列一元函数的地方。例如。
const add = (a, b) => a + b;与const curriedAdd = a => b => a + b;
标签: javascript ecmascript-6 functional-programming