柯里化(Currying)是一种高级用法,可以将一个参数为n的函数转换为n个参数为1或更少的函数。
柯里化函数示例:
// 求和
function sum (x) {
return function(y){
return x + y;
}
}
sum(1)(3);一个函数f(x, y)经过柯里化,会被变换成f(x)(y)。
使用柯里化技术,我们不改变函数的功能,只是改变调用它的方式。
// 求乘积
function multiply(x, y){
return x * y;
}
function calc(fun){
return function(x){
return function(y){
return fun(x, y);
}
}
}
let handle = calc(multiply);
multiply(3, 6); // 18
handle(3)(6); // 18正如我们在上面的代码中所看到的,我们已经将函数multiply(x,y)转换为函数handle,它一次接受一个参数。
两种调用方式结果完全一样。