美文网首页
7.组合函数

7.组合函数

作者: 静昕妈妈芦培培 | 来源:发表于2021-09-17 17:58 被阅读0次

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

  • 比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的;
  • 那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复;
  • 那么是否可以将这两个函数组合起来,自动依次调用呢?
  • 这个过程就是对函数的组合,我们称之为 组合函数(Compose Function)

实现组合函数

例:看下面代码,把一个函数执行的结果作为另一个函数的参数,如果函数很多,执行起来很麻烦,而且阅读性很差
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 的知识

相关文章

  • 7.组合函数

    组合(Compose)函数是在JavaScript开发过程中一种对函数的使用技巧、模式: 比如我们现在需要对某一个...

  • 函数式编程(四)——函数组合

    目录 函数组合背景知识管道Lodash中的组合函数 —— flow()/flowRight()函数组合原理模拟函数...

  • 关于webpack loader的加载顺序

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • compose

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • FP

    偏函数 颠倒实参顺序 组合函数 组合函数 reduce实现 pipe(...) VS compose(...)p...

  • 7. 函数

    基于网络课程《Python全栈开发专题》 记录笔记,请支持正版课程。 斐波那契数列 斐波那契数列科普:https:...

  • 7. 函数

    Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数 函数名其实就是指...

  • 7.函数

    课程来自慕课网DavidChin老师 函数 函数的调用 函数的默认参数

  • 7.函数

    参数标签、参数名称 参数设置默认值 习惯上,无默认值得参数放前面,因为它们比较重要 可变参数 输入输出参数:函数内...

  • 数据团Python_7. 函数

    7. 函数 7.1 函数概念及常用函数调用 函数,完成某个工作的代码块,由语句构成函数组成: 函数名称 函数参数 ...

网友评论

      本文标题:7.组合函数

      本文链接:https://www.haomeiwen.com/subject/agpjgltx.html