先说个题外话,很多人在学redux(react管理状态流的一种思想)的时候,查了各种资料都不能真正懂redux是个什么东西,怎么实现的,只能停留在仅仅懂用的地步。
redux是很难,但是我们也要换个角度想,是不是自身水平有限,才看不懂呢?
至少在我自己看来,我还有很多思想,很多js的知识点还没掌握,等我的基础足够扎实,不断积累与沉淀,才能真正理解建立在这些思想和知识上的技术吧。
说这些,是自己的一些反思,也是因为redux中也小用到函数柯里化。
直接上代码:
好了进入正题,说一下函数柯里化。
关于Currying,英文好的同学可以看看维基上十分全面(相当专业)的解释----维基Currying(然后我默默地点击了翻译)。
简单总结一下:Currying是一种产生一系列函数的方法,每个函数都只有一个参数。这个建设是通过在另外一个新的Curry函数中隐藏一个参数来实现的,而这个函数的作用是返回剩余参数的函数。类似一种分解的思想吧,把一个堆积的东西分解出来,逐个解决。
啥意思呢?
就是我现在定义一个函数:const add = (a, b, c, d) => { console.log(a+b+c+d) },有一个要求,如果想要执行这个函数,必须要把4个参数都传递进去。这种思想在中间件里其实也可以运用,把所有注册的事件当作参数就行。
下面我们实现一下curry函数:
这里有个难理解的地方是function f2(){}()这种写法,举个例子方便理解:
然后我们把上面es5的写法写成es6的写法:
继续代码缩减:
最后,有一道curry的题大家可以做做:curry 函数
大家端午节快乐~
打代码别忘了身体健康哈,一会健身走起~
持续发布自己对一些js知识点的理解,欢迎关注