什么是函数柯里化(Currying)

函数柯里化

函数柯里化概念

函数柯里化是一种关于函数的高阶技术,不仅可以被用于 JavaScript,还可被用于其他编程语言。

柯里化是一种函数的转换,它将一个可调用的函数 f(a, b, c) 转换成 f(a)(b)(c)

柯里化不会调用函数,它只是对函数进行转换。

先用一个实际应用对函数柯里化进行理解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 函数柯里化
funtion curry(f) {
return function(a) {
return function(b) {
return f(a, b)
}
}
}

function sum(a, b) {
return a + b
}

let curriedSum = curry(sum)

console.log(curriedSum(a)(b))

从上可以看出函数的柯里化实现很简单,只有 2 个包装器(wrapper)

函数柯里化的目的

curry 的这种用途可以理解为:参数复用。本质上是降低通用性,提高适用性。

可是即便如此,是不是依然感觉没什么用呢?