7.组合函数

2021-09-17  本文已影响0人  静昕妈妈芦培培

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

实现组合函数

例:看下面代码,把一个函数执行的结果作为另一个函数的参数,如果函数很多,执行起来很麻烦,而且阅读性很差
function double(num) {
  return num * 2
}
function square(num) {
  return num ** 2
}

//把一个数字先乘以2再自身平方求值
const result = square(double(12))
console.log(result)
需求:

实现一个compose函数,执行这个函数返回一个新函数
compose的参数为依次需要调用的函数
给返回的新函数传入参数,参数会被传给compose第一个函数参数,第一个函数参数的执行结果作为参数传递个第二个函数参数,一次执行,等所有函数参数执行完,把结果返回

//实现组合函数;
//compose函数执行返回一个函数,
function compose(...fns) {
  
}

const bar = compose(double, square)
const result1 = bar(12)
console.log(result1) //576
函数的实现
function compose(...fns) {
  //校验传入的参数是否是函数
  for(var i = 0; i < fns.length; i++) {
    var fn = fns[i]
    if(typeof fn !== 'function') {
      throw new TypeError("argument must be function")
    }
  } 

  return function proxy(...args) {
    var index = 0
    var result = fns.length? fns[index].apply(this, args):args
    while(++index < fns.length) {
      result = fns[index].call(this, result)
    }

    return result

  }
}

非常感谢王红元老师的深入JavaScript高级语法让我学习到很多 JavaScript 的知识

上一篇 下一篇

猜你喜欢

热点阅读