javascript - 什么是 'Currying' ?

标签 javascript functional-programming terminology definition currying

我在多篇文章和博客中看到过对柯里化(Currying)函数的引用,但我找不到一个好的解释(或者至少是一个有意义的解释!)

最佳答案

柯里化(Currying)是指将一个接受多个参数的函数分解为一系列函数,每个函数只接受一个参数。这是一个 JavaScript 示例:

function add (a, b) {
  return a + b;
}

add(3, 4); // returns 7

这是一个接受两个参数 a 和 b 并返回它们之和的函数。我们现在将柯里化(Currying)这个函数:

function add (a) {
  return function (b) {
    return a + b;
  }
}

这是一个接受一个参数 a 的函数,并返回一个接受另一个参数 b 的函数,该函数返回它们的总和。

add(3)(4); // returns 7

var add3 = add(3); // returns a function

add3(4); // returns 7
  • 第一个语句返回 7,就像 add(3, 4) 语句一样。
  • 第二个语句定义了一个名为 add3 的新函数,它将 将 3 添加到它的参数中。 (这就是某些人所说的闭包。)
  • 第三条语句再次使用add3 操作将 3 加到 4 结果产生 7 个。

关于javascript - 什么是 'Currying' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080676/

相关文章:

javascript - 测量 React Native 应用程序中网络套接字使用的带宽

haskell - 如何计算函数被调用的次数,FP方式

c# - 关于参数、参数和类型如何工作的说明

git - 在 GitHub URL 的 : what is the difference between a tree and a blob?

java - Java中 "IS -A"关系和 "HAS-A"关系有什么区别?

javascript - 如何在提交后关闭彩盒窗口并刷新父页面上的图像?

javascript - 如何从 nodejs aws s3 getObject 回调数据中检索元数据?

javascript - 以编程方式触发文本光标,就像用户实际单击输入标签一样

javascript - 创建数字数组的功能方法

java - java中有什么好的持久集合框架?