currying又称函数‘柯里化’

curry 的概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数

先看一个简单例子,add函数接受 2 个参数(或者多个),addX函数接受 1 个参数。
换而言之,所谓"柯里化",就是把一个多参数的函数,转化为单参数函数。将一个函数转换为一个新的函数

// 非柯里化
function add(x, y, z) {
    return x + y + z; // 普通函数求和
}

add(1, 2, 3) === 6; // true

// 柯里化
function addX(y) { // 第一层函数
    return function(x) { // 第二层return 返回一个函数接收一个X,此函数调用后返回第三层函数
        return function(z) { // 第三层函数接收z,返回x+y+z的总和
            return x + y + z;
        };
    }
    
}

addX(2); // 返回 function 并接收一个X
addX(2)(1); // 返回 function 并接收一个z
addX(2)(1)(3) == 6; // true

柯里化的好处

我能想到的是:

  • 代码复用,减少维护成本
  • 尽可能的函数化,便于阅读
"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。

这只是一个概念,记住就行


雯雯菇凉
30 声望2 粉丝