博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Compose函数作用
阅读量:5893 次
发布时间:2019-06-19

本文共 2014 字,大约阅读时间需要 6 分钟。

一:使用compose函数简化写法

function compose() {    for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {        funcs[_key] = arguments[_key];    }    if (funcs.length === 0) {        return function(arg) {            return arg;        };    }    if (funcs.length === 1) {        return funcs[0];    }    return funcs.reduce(function(a, b) {        console.log(a,b)        return function() {            return a(b.apply(undefined, arguments));        };    });}function func1(num) {  console.log('func1 获得参数 ' + num);  return num + 1;}function func2(num) {  console.log('func2 获得参数 ' + num);  return num + 2;}function func3(num) {  console.log('func3 获得参数 ' + num);  return num + 3;}var re1 = func3(func2(func1(0)));console.log('re1:' + re1);var re2 = compose(func3, func2, func1)(0);console.log('re2:' + re2);复制代码

二:使用compose函数生成闭包,实现中间件功能

function compose() {    for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {        funcs[_key] = arguments[_key];    }    if (funcs.length === 0) {        return function(arg) {            return arg;        };    }    if (funcs.length === 1) {        return funcs[0];    }    return funcs.reduce(function(a, b) {        console.log(a,'----',b)        console.log('------')        return function() {            return a(b.apply(undefined, arguments));        };    });}let say = function(){    console.log(0000)}function func1(func) {  return function(){      console.log(1111)      func()      console.log(1111)  }}function func2(func) {  return function(){      console.log(2222)      func()      console.log(2222)  }}function func3(func) {  return function(){      console.log(3333)      func()      console.log(3333)  }}// var re1 = func3(func2(func1(0)));// console.log('re1:' + re1);var strongSay = compose(func3, func2, func1)(say);strongSay()复制代码

实际上就是做了这么一件事: func1,func2,func3都接收func这个形参,而func这个参数由于会被使用,所以会一直以闭包的形式保存在内存中,也就是说func1,func2,func3会一直存在在内存中,func1接收到的是say,func2接收到的是func1,func3接收到的是func2。

转载地址:http://bsisx.baihongyu.com/

你可能感兴趣的文章
二极管测试
查看>>
PHP跳转页面的几种实现方法详解
查看>>
Oracle PL/SQL编程学习笔记:序列和自动编号
查看>>
KOA 学习(八) koa-bodyparser
查看>>
C# - 事物回滚
查看>>
js 去掉前后空格
查看>>
【 D3.js 入门系列 — 3 】 做一个简单的图表!
查看>>
MD5加密
查看>>
iOS Developer Library
查看>>
BZOJ2729:[HNOI2012]排队(组合数学)
查看>>
Postman的Tests标签测试
查看>>
idea常用到的命令
查看>>
Netty实践:ChannelInboundHandlerAdapter与ChannelOutboundHandlerAdapter
查看>>
第二章:Hotspot虚拟机对象
查看>>
第四章:虚拟机监控工具
查看>>
JavaScript基础(一)
查看>>
hdu2044
查看>>
Windows App开发之使用通知与动态磁贴
查看>>
Web前端学习——HTML
查看>>
Android APK反编译查看源码及资源文件
查看>>