JavaScript中的组合(Compose)函数
组合(Compose)函数
组合(Compose)函数是在JavaScript开发过程中一种对函数的使用技巧、模式:
- 比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的;
- 那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复;
- 那么是否可以将这两个函数组合起来,自动依次调用呢?
- 这个过程就是对函数的组合,我们称之为组合函数(Compose Function);
举例:
function double(num){return num*2;
}
function square(num){return num**2;
}var calcFn = compose(double,square);//实现组合函数
console.log(calcFn(20));
实现上面例子中的简单的组合函数:
function compose(fn1,fn2){return function(x){return fn2(fn1(x));}
}
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 TypeError('Expected a function');}}//取出所有的函数一次调用,最终返回一个函数return function(...args){//先获取到第一次执行的结果var index = 0;var result = length ? fns[index].apply(this,args): args;while(++index<length){result = fns[index].call(this,result);}return result;}
}
JavaScript中的组合(Compose)函数相关推荐
- JavaScript中的立即执行函数
原文链接 通常我们声明一个函数有以下几种方式: // 声明函数f1 function f1() {console.log("f1"); } // 通过()来调用此函数 f1();/ ...
- 有没有更好的方法在JavaScript中执行可选的函数参数? [重复]
本文翻译自:Is there a better way to do optional function parameters in JavaScript? [duplicate] This quest ...
- JavaScript中的一等公民: 函数(Function)
1. 函数的基本使用 使用函数声明或者函数表达式创建一个函数 foo(); //foo bar(); //Uncaught ReferenceError: Cannot access 'bar' be ...
- 深入理解javascript中的立即执行函数(function(){…})()
2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...
- JavaScript中各存在性函数
JavaScript中有很多表示存在性和从属关系的函数,本文介绍如下几个: 1)有关实例与构造函数原型之间的关系:isPrototypeOf(),Object.getPrototypeOf(); 2) ...
- 如何在JavaScript中使用高阶函数
将另一个函数作为参数的函数,或者定义一个函数作为返回值的函数,被称为高阶函数. JavaScript可以接受高阶函数.这种处理高阶函数的能力以及其他特点,使JavaScript成为非常适合函数式编程的 ...
- JavaScript中常用内置函数
JavaScript中有两种函数:一种是语言内部事先定义好的函数叫内置函数,另一种是自己定义的函数.如下是常用的6种内置函数: eval函数 eval(expr)函数可以把一个字符串当作一个JavaS ...
- JavaScript中使用字符串调用函数
JavaScript中有一种函数的调用方法:使用函数名的字符串来调用 function forTimeout(x, y){ alert(x + y);}function delay(x , y , t ...
- JavaScript中的数值转换函数
1.Number()函数 (1)用于任何数据类型,属于一种转型函数 (2)转型规则 Boolean值,true->1,false->0 数字值,简单的传入和返回 null值,返回0 und ...
最新文章
- git搭建局域网服务器
- 【学员分享】PMcaff阿德老师精(diao)彩(bao)传道的9条干货
- source insight和vim同时使用
- linux下json数据解析,Linux下使用jq简单解析json的方法
- java gc的特性_Java12新特性 -- 可中断的G1 Mixed GC
- matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
- 03-23 卡顿分析
- 备份数据库的expdp语句_Oracle数据库备份恢复Data Pump Expdp/Impdp参数详解与案例介绍...
- oracle使用between and边界问题
- 有赞云支付php接口,Erphpdown wordpress插件集成有赞云支付的接口申请方法[已失效]...
- 学习双拼必看:双拼输入法的心得以及快速入门办法
- android设备连接打印机,【Android快讯】教你通过Android设备直接连接打印机打印文件...
- 3Ds max彻底卸载方法
- 商户都在用的进销存软件,哪一个性价比最高?
- 可视化实验四:大数据可视化工具—ECharts(二)
- Python 根据excel内容批量生成二维码
- iPhone/苹果手机不用数据线传输文件到电脑的方法/步骤
- 数据路:三人行,必有我师!
- Bootstrap分割线和普通分割线
- 解决win7 下面 利用docker搭建jitsi-meet测试环境局域网无法访问的问题
热门文章
- Boolean类型详解
- 递归神经网络LSTM原理——结合实例MATLAB实现
- 四旋翼无人机飞控系统设计(PID控制算法)
- 2017计算机基础教学大纲,2017级大学计算机基础教学大纲.docx
- 奇葩的java代码_聊聊我面试过的一个最奇葩的 Java 程序猿!
- Gradle 安装和配置教程
- 大话 函数指针 和 指针函数
- 国防科技大学计算机cpa,强烈推荐!这些考研院校不歧视本科,特别保护第一志愿!...
- Window10升级遇到大坑错误代码:0xc000000e完美解决方案
- mahout FpGrowth