函数柯里化curry

一、什么是函数柯里化

柯里化来源于偏应用函数
偏函数一般也是会固定函数的几个参数,但是一般第一个参数为一个函数,作为被返回并执行的函数
函数柯里化:就是把多参数函数分解为多return的单参数函数
柯里化前
function func (a, b, c){
  return a + b + c;
}
//柯里化为
function func1 (a){
  return function (b){
    return function (c){
      return a + b + c;
    }
  }
}
//调用时
func(1, 2, 3)//6
func1(1)(2)(3);//6

简单利用柯里化实现功能

function sum() {
    console.log(arguments,'外部缓存')
    var _args = Array.from(arguments);//类数组转数组
    //将函数的参数缓存起来(必包)
    function _sumer() {
        _args.push(...arguments);//将多次传入的参数放到数组中
        return _sumer;
    }
    //实现业务功能:求和
    _sumer.toS = function() {
        return _args.reduce((acc,cur) => {
            return acc+cur;
        },0)
    }
    return _sumer;
}
console.log(sum(1,2)(3)(5).toS());//1,2参数传给sum  3,5参数传给_sumer函数

二、柯里化的优缺点

事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数, 得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种 对参数的“缓存”,是一种非常高效的编写函数的方法

posted @ 2021-09-01 15:04  #青橙#  阅读(67)  评论(0编辑  收藏  举报