首页 > 其他分享 >JS中的pipe原理

JS中的pipe原理

时间:2022-11-03 22:36:10浏览次数:84  
标签:... f2 fns reduce JS pipe accu 原理

学习reduce()时遇到一个练习“功能型函数管道”,对于代码中的pipe不能理解,类似于下面这一行代码,信息量很丰富,有es6中的扩展运算符,箭头函数,reduce()方法。

const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x); 

展开:

const pipe = function(x, ...fns) {
    fns.reduce((y, f) => f(y), x);
}

进一步拆解:

function pipe(x, ...fns){
        let accu= x;
        for(let f in fns){
            accu= f(accu)
        }
        return accu;
    }

这样就容易看清。
对于pipe()函数,当我们调用pipe(x, f1, f2)时,返回f2(f1(x))

标签:...,f2,fns,reduce,JS,pipe,accu,原理
From: https://www.cnblogs.com/sexintercourse/p/16856065.html

相关文章

  • js基础01
    ExerciseTest01严格检查模式strict'usestrict';//预防js的随意性导致产生的一些问题,必须放在第一行leti=1;//局部变量建议都用let定义数据类型数......
  • 解决本地浏览器运行项目时的跨域问题-Access to XMLHttpRequest at ‘file:///D:/WebP
     解决本地浏览器运行项目时的跨域问题-AccesstoXMLHttpRequestat'file:///D:/WebPracties/xxxxxx/data/funData.json问题描述解决办法一解决办法二解决方法三问题描......
  • 计算机组成原理存储系统的简单笔记(思维导图)
    计算机组成原理存储系统的简单笔记(思维导图)前言今天写了一些数据结构的笔记,于是决定顺便把计算机组成原理的存储器部分回顾一下。因为在数据结构的第二部分线性表的顺序结构......
  • Controller输出JSON数据 乱码解决方案
    ​我们可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!<mvc:annotation-driven><mvc:message-convertersregister-defaults="true">......
  • JTA(XA)原理解析
    Transaction(事务)分两种LocalTransaction和GlobalTransaction涉及到一个Connection的Commit,称为LocalTransaction涉及到多个Connection的Commit,称为GlobalTransac......
  • js延迟加载、js异步加载
    1.js延迟加载(1)js延迟加载是js性能优化的一种方式(2)作用:为了提高网页的加载速度(3)原理:等网页加载完成之后再加载js文件··需要优化的原因:HTML元素......
  • js数组操作——对象数组根据某个相同的字段分组
    先说点废话最近在实际业务中,需要编写一个方法根据数组中每一个对象的一个相同字段,来将该字段值相等的对象重新编入一个数组,返回一个嵌套的数组对象,特地来做个总结。当然......
  • JS防抖与节流
    1.概念上的区别防抖:多次执行只有最后一次生效,必要参数[handle,time]节流:一段时间内只能执行一次,必要参数[handle,time]2.实现一下防抖:1functiondebounce......
  • ThreeJS 创建水面报错 /textures/water/Water_1_M_Normal.jpg 404 解决方法
    threeJS创建水面报错 /textures/water/Water_1_M_Normal.jpg404根据路径找不到水面相关图片,原因是npm包中未包含图片,并且图片路径指向当前开发环境的src目录下,解决......
  • Next.js dynamic router All In One
    Next.jsdynamicrouterAllInOnedynamicroutesdemos单层动态路由/pages/post/[pid].jsimport{useRouter}from'next/router'constPost=()=>{co......