JS-柯里化函数

柯里化函数

1.高阶函数的一种,即接收函数为参数,返回一个处理函数的函数。
2.我们在不知道一个函数的参数个数的时候,做收集参数的操作;等待传参的数量达到接收函数的参数个数,再执行这个接收的函数。
3.如果这个函数的传参数量没有达到接收函数的参数数量或者我们规定的参数数量,返回一个函数,继续去做收集参数的事情,等到参数收集完毕,执行这个函数。

// 柯里化函数封装
   function curry(fn,args){
      // 保存当前this
      let _this = this;
      // 统计传入函数的参数数量--也可以根据实际需求自己设定
      let len = fn.length;
      // 收集参数
      args = args||[];
      // 返回一个函数
      return function(){
          // 继续收集参数
          let _args=args.concat([].slice.call(arguments));
          // 判断参数的收集是否达到统计参数的数量
          if(_args.length<len){
            // 不满足,继续期待
            return curry.call(_this,fn,_args);
          }
          // 满足,就执行传入的函数
          return fn.apply(_this,_args);
      }
};

举个梨子

如果一个求和函数,未知参数数量,怎么执行更爽:

function add(a,b,c,d,e){
    return a+b+c+d+e;
}
let newAdd=curry(add);
console.log(newAdd(1,5)(2)(3,8));//19
console.log(newAdd(1)(2)()()(3)()(4)(5))//15

随便你执行几次,等参数收集到了五个,就执行add函数进行打印;传参不够,返回一个函数继续给你传参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值