偏函数和柯里化

偏函数

现有的一些参数值固定,从而让函数更加灵活

    function mul(a, b) {
        return a * b;
    }
    let double = mul.bind(null, 2);
    alert( double(3) ); // = mul(2, 3) = 6
    alert( double(4) ); // = mul(2, 4) = 8
    alert( double(5) ); // = mul(2, 5) = 10

柯里化

柯里化简单来说就是本来一个函数要好多参数,看着和使用都不方便
于是为了简便和容易阅读,就可以构造一个函数少量多次的传参
柯里化是一种将使用多个参数一个函数装换成一系列使用一个参数的函数的技术

非柯里化柯里化
一个函数多个函数
多个参数一个参数
 var add=function(a,b){
   return a+b
 }

 function curry(fn){
  let args=[].slice.call(arguments,1)
  //tip:注意不能用箭头函数,因为箭头函数不绑定argumnets
  return function(){
    let newArgs=args.concat([].slice.apply(arguments))
    //tip:注意要加return 要不然不能通过clg打印 
    //tip:注意newArgs只是参数,前面不绑定this要写null
    return add.apply(null,newArgs)
  }
 }
 var dealFun=curry(add,1)
 console.log(dealFun(2)) //3

 var mul=function(a,b){
   return a*b
 }

 //也就是这个函数里面的东西都可以用
 function curryMul(fn){
  return function(a){
    return function(b){
      return fn(a,b)
    }
  }
 }

 var mulFun=curryMul(mul)
 console.log(mulFun(6)(2))//12
 
//  dealFun(1)(2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值