组合函数概念的理解

组合函数是在JavaScript开发过程中一种对函数的使用技巧、模式

  • 如果我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的;
  • 那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复
  • 想将两个函数组合起来,自动依次调用
  • 对函数的组合,我们称之为组合函数
function compose(fn1, fn2){
    return function(x) {
        return fn2(fn1(x))
    }
}
function double(num){
    return num * 2
}

function square (num) {
    return num ** 2
}

var calcFn = compose(double, square)
console.log(calcFn(20))

组合函数的封装

上面实现的compose函数比较简单,我们需要考虑更加复杂的情况,比如传入了更多的函数,在调用compose函数时,传入了更多参数。

function compose(...fns){
        //边界判断
        var length = fns.length
        for(var i = 0; i< length; i++){
          var fn = fns[i]
          if(typeof fn !== "function"){
            throw new Error(`index position ${i} must be a function`)
          }
        }

        //返回新的函数
        return function(...args) {
          var result = fns[0].apply(this, args)
          for(var i = 1;i < length; i++){
            var fn = fns[i]
            result = fn.apply(this, [result])
          }
          return result
        }
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至尊绝伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值