js 柯里化

151 阅读1分钟

一、柯里化概念

把接收多个参数的函数变换成接收一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

  • 示例代码
//普通的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));