一、柯里化概念
把接收多个参数的函数变换成接收一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
- 示例代码
//普通的add函数
function add1(x,y,z){
return x + y + z;
}
add1(10,20,30); //60
//Currying后
function add2(x){
return function(y){
return function(z){
return x + y + z;
}
}
}
add2(10)(20)(30); //60
- 柯里化简写
let add3 = x => y => z => {
return x + y + z;
}
add3(10)(20)(30); //60
//上述写法相当于箭头函数简写
let add3 = x => {
return y => {
return z => {
return x + y + z;
}
}
}
二、柯里化作用
- 让函数的职责单一,在函数式编程中,一个函数处理的问题尽可能单一,而不是将一大堆的问题过程交给一个函数来处理(每个函数处理某个逻辑,而不是把所有逻辑都放到同一个函数处理)
- 逻辑复用
//示例:假如在程序中经常需要将 5 和另一个数字相加
//普通函数做法:
function sum1(m, n){
return m + n;
}
//需要每次将5传入
console.log(sum1(5,10));
console.log(sum1(5,45));
console.log(sum1(5,85));
//柯里化做法:
function sum2(m){
return function(n){
return m + n;
}
}
let publicNumber = sum2(5)
console.log(publicNumber(10));