目录
一、函数柯里化是什么?
二、如何实现函数柯里化?
1、第一种方法:多层return嵌套
2、第二种方法:将普通函数转成柯里化函数
百度百科中对函数柯里化的解释是:在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
举个说明一下:
比如我们需要求三个数的和,我们一般的做法就是一次性传入三个参数进行求和:
function add(a, b, c){
return a + b + c
}
//我们一般调用函数的方式
add(1, 2, 3)
而函数柯里化就是每次传入单一的参数,如下所示:
add(1)(2)(3)
那么,此时add函数应该如何写呢?
我们使用add(1)(2)(3)的方式调用函数,就需要每次都返回一个函数,add(1)(2)(3)就相当于:
var fn1 = add(1)
var fn2 = fn1(2)
fn2(3)
因此add函数可以这样写:
这里使用到了闭包的原理来实现add函数,这种方法比较简单,很容易就能想到,但是这种方法并不通用,所以我们可以封装一个函数,用于将普通函数转成柯里化函数。
柯里化函数执行的过程就是一个收集参数的过程,因此我们只要收集完所有参数,然后把参数传递给普通函数执行即可。