函数柯里化
# 函数柯里化
# 什么是柯里化
柯里化是一种把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
是不是有点难理解,有点绕, 我们用代码例子说明下,比如:
function add (a, b, c) {
console.log(a + b + c);
}
add(1, 2, 3); // 6
1
2
3
4
2
3
4
这个add(1, 2, 3)
函数接收三个参数, 把add
转成柯里化函数
呢,就是把它转成可以 add(1)(2)(3)
,或者add(1, 2)(3)
这样来调用
简单来说,柯里化是一种把一个 n个参数
函数,转成可以把参数分开调用
的多个函数,每调用一次会返回一个新的函数
,直到你调用的参数达到n
个
# 为什么要柯里化
上面说到柯里化就是把一个 n个参数
函数,转成可以把参数分开调用
的多个函数,那我明明可以一次调用完就可以了,你还转这么多次调用,这么麻烦,有什么好处。
- 减少代码的冗余
- 增加代码可读性
# 柯里化函数的实现
我们来分析下:
add(1)(2)(3)
这种写法, 我们拆开来看 先执行 add(1)
, 是不是应该返回一个函数,因为后面还有 (2)
, 执行完 (2)
, 是不是还得返回一个函数,因为后面还有个 (3)
, 那这个 add(1)(2)(3)
是不是调用了三次函数,前面执行(1)(2)
都是返回一个函数,最后一次(3)
才是返回结果
以此类推,如果有n个参数,那么是不是调用前面n - 1
次,都是返回函数, 最后一次才是返回最终结果。
我们还可以知道, 调用一个函数,返回结果是一个函数,多次调用,还是返回一个函数, 这样子的写法,是不是有点递归的样子。
你猜对了,柯里化函数的实现,其实它也就是用到了递归的写法。
编辑 (opens new window)