首页 > 其他分享 >理解组合函数

理解组合函数

时间:2023-08-21 18:23:41浏览次数:27  
标签:function count return 函数 组合 理解 var

理解组合函数

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

口比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的;

口那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复;

口那么是否可以将这两个函数组合起来,自动依次调用呢?

口这个过程就是对函数的组合,我们称之为组合函数(Compose Function);

实现最简单的组合函数

 1 // 组合函数的理解
 2 function double(num){
 3     return num*2
 4 }
 5 function square(num){
 6     return num**2
 7 }
 8 var count=10
 9 var result=square(double(count))
10 console.log(result)
11 //实现最简单的组合函数
12 function composeFn(m,n){
13     return function(count){
14         return n(m(count))
15     }
16 }
17 var newFn=composeFn(double,square)
18 console.log(newFn(count))

通用的组合函数的实现

 1 //通用的组合函数的实现
 2 function hyCompose(...fns){
 3     var length=fns.length
 4     for(var i=0;i<length;i++){
 5         if(typeof fns[i] !== 'function'){
 6             throw new TypeError('Expected arguments are functions')
 7         }
 8     }
 9     function compose(...args){
10         var index=0
11         var result=length?fns[index].apply(this,args):args
12         while(++index<length){
13             result=fns[index].call(this,result)
14         }
15         return result
16     }
17     return compose
18 }
19 function double(num){
20     return num*2
21 }
22 function square(num){
23     return num**2
24 }
25 var count=10
26 var newFn=hyCompose(double,square)
27 console.log(newFn(count))

 

标签:function,count,return,函数,组合,理解,var
From: https://www.cnblogs.com/KooTeam/p/17646735.html

相关文章

  • SPI 协议理解
    1、SPI有四根线: CLK、MISO、MOSI、CSS, CSS是片选信息,CLK要与从SPI设备保持同一个时钟频率1、SPI数据传输就是数据寄存器的移位发送   而CPHA和CPOL针对的哪个边沿进行采样或者哪个边沿进行输出2、MISO从设备必须高阻态,MOSI没有要求    ......
  • #Powerbi 1分钟学会,RANK函数,多字段排名函数.
    一:思维导图&数据源示例1.1思维导图 1.2示例数据源二:参数构成三:案例度量值基础度量值总销量=CALCULATE(SUM('数据源'[销量]))总销售额=CALCULATE(SUM('数据源'[销售额]))RANK度量值RANK排名=RANK(  ---MAKEBYSIMONE  ---第一参数,skip/dense,可选......
  • 深入理解数据库事务:确保数据完整性与一致性
    前言在现代信息系统中,数据是至关重要的资产之一。作为一名后端开发人员,与数据库的交道必不可少,为了确保数据的完整性、一致性和可靠性,数据库引入了事务的概念。本次将带您深入了解数据库事务的重要性、特性以及如何在应用程序中正确地使用事务来维护数据的稳定性。什么是数据库......
  • vue——debounce防抖函数无效
    参考:vue记录-vue中使用lodash_.debounce防抖不生效原因,解决方案https://blog.csdn.net/Delete_89x/article/details/122000444 问题代码:<el-inputv-model="slotProps.form.condition"placeholder="请输入"@input="inputChange"></el-......
  • Vue的组件data为什么必须是一个函数?
    vue中的data必须是函数是为了保证组件的独立性和可复用性。实例是通过构造函数来创建的,每个构造函数可以new多个实例,每个实例都会继承原型上的方法和属性,在vue中,一个vue组件就是一个vue实例,当一个组件被复用多次,就会创建多个实例。如果data是对象,那么被多次复用的这个组件,在某......
  • JavaScript中的“函数式编程”
    前言我们虽然之前老是听说过“函数式编程”,但一直不能理解,我们静下心来研究了一下,才发现这些东西真的很巧妙。在React这些框架中,对象,函数为王,因为框架已经帮你打建好了在框架中,数据为王,那些函数本身就是用来处理数据这里我们要用更高层的思维,而放弃底层思维,这些本身都是用户数......
  • 多摩川编码器协议理解与自做经历-(1)
    多摩川协议理解-(1)多摩川编码器有绝对值的和增量的两种,这边主要是我对多摩川绝对值的理解。前文,多摩川编码器其实是日本有一家公司叫多摩川的公司做出来的,其实他们家有很多种编码器,但是这里我只对他的们出的协议作出理解。 硬件接口方面,因为有单圈和多圈只分,多圈一般有电池,所......
  • 8 JavaScript函数
    8JavaScript函数在JS中声明函数和python差不多.也要有一个关键字顶在前面.python是def,到了JS里换成了function,只不过在JS中没有像python那么死板,必须def后面必须跟上函数名.这也为我们未来做逆向提供了第一个超大的伏笔.//语法//声明函数function函数名(形参1,......
  • 荒原之梦考研数学原创:函数本体偏离点必为尖点
    荒原之梦原创:函数本体偏离点必为尖点:https://zhaokaifeng.com/16812/补充说明:前面所说的内容总结起来就是:一个处处可导的本体函数只有一个可导趋势,凡是已经有无数个点满足这个可导趋势的趋势(与本体函数重合)就必须继续满足该可导趋势(继续重合),否则,开始偏离本体函数可导趋势的点一......
  • C++友元函数和友元类的使用
    1.友元介绍在C++中,友元(friend)是一种机制,允许某个类或函数访问其他类的私有成员。通过友元,可以授予其他类或函数对该类的私有成员的访问权限。友元关系在一些特定的情况下很有用,例如在类之间共享数据或实现特定的功能。友元可以分为两种类型:类友元和函数友元。2.类友元类友元(Friend......