JavaScript-手写compose函数

本文探讨了函数式编程中的compose函数,它用于简化多函数调用的过程。通过一个实例展示了如何使用compose函数将多个函数串联执行,如add1, add1, mul3和div2。然后,作者提供了一个使用闭包实现的compose函数代码,并解释了其工作原理,强调了代码简洁性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,今天跟大家聊一个非常古老的一个思想,函数式编程思想,函数式编程有他的好处,当然也有坏处,今天我们不详细的讲函数式编程,今天我们来讲里面的一个compose函数,有了解过的同学应该知道,compose的作用大概就是简化执行科理化函数的调用过程,大概意思就是在这个函数里面穿进去好多函数,他都会按顺序执行了,下面我们准备一下初始化代码(今天我们只讲一种方法,其实我是不太看好这种方法的只不过我看这种方法实现貌似挺多的,今天就来讲一下这种方法):

const add1 = (x) => x + 1;
const mul3 = (x) => x * 3;
const div2 = (x) => x / 2;
div2(muls(add1(add1(0)))) //3

我们如果像上面这么写太繁琐了,我们写代码,就是上帝,当然是怎么简单怎么来啦,下面我们创建一个compose函数来实现一下:

function compose(..args){
    
}
const r=compose(add1, add1, mul3, div2)
console.log(r(0))

上面我们看到我们写的代码,大部分同学应该已经想到了,没错我们使用闭包来实现,下面我们继续:

function compose(..args){
    return (num)=>{
            num=args.reducer((count,item)=>{
                    return item(count)        
            },num)
            return num
    }
}

上面我们就写完了代码,我们来解释一下代码的大概意思首先因为是闭包所以我们需要通过第二层的函数才能取到num,我们取到了num我们通过reducer函数做了一个累加器,有些人可能这里绕不过来这个弯,建议大家去看一下我前面的手写reducer函数内一篇文章没,这里我们现在item是代表的每一个函数我们做了一个调用item()我们的函数需要传一个值这个值就是count=num我们只用每次把count穿进去就ok了每次在函数内部去做了操作,当然实现方法很多,不止一种,代码是活的,喜欢的可以点个赞万分感谢!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值