大家好,今天跟大家聊一个非常古老的一个思想,函数式编程思想,函数式编程有他的好处,当然也有坏处,今天我们不详细的讲函数式编程,今天我们来讲里面的一个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了每次在函数内部去做了操作,当然实现方法很多,不止一种,代码是活的,喜欢的可以点个赞万分感谢!!!
版权归原作者 会给我晚安吗 所有, 如有侵权,请联系我们删除。