美文网首页程序员@IT·互联网让前端飞
【js】编程的一个重要思想----函数柯里化Currying

【js】编程的一个重要思想----函数柯里化Currying

作者: 陈小俊先生 | 来源:发表于2017-05-28 13:51 被阅读0次

先说个题外话,很多人在学redux(react管理状态流的一种思想)的时候,查了各种资料都不能真正懂redux是个什么东西,怎么实现的,只能停留在仅仅懂用的地步。

redux是很难,但是我们也要换个角度想,是不是自身水平有限,才看不懂呢?

至少在我自己看来,我还有很多思想,很多js的知识点还没掌握,等我的基础足够扎实,不断积累与沉淀,才能真正理解建立在这些思想和知识上的技术吧。

说这些,是自己的一些反思,也是因为redux中也小用到函数柯里化。

直接上代码:

applyMiddleware源码

好了进入正题,说一下函数柯里化。

关于Currying,英文好的同学可以看看维基上十分全面(相当专业)的解释----维基Currying(然后我默默地点击了翻译)。

简单总结一下:Currying是一种产生一系列函数的方法,每个函数都只有一个参数。这个建设是通过在另外一个新的Curry函数中隐藏一个参数来实现的,而这个函数的作用是返回剩余参数的函数。类似一种分解的思想吧,把一个堆积的东西分解出来,逐个解决。

啥意思呢?

就是我现在定义一个函数:const add = (a, b, c, d) => { console.log(a+b+c+d) },有一个要求,如果想要执行这个函数,必须要把4个参数都传递进去。这种思想在中间件里其实也可以运用,把所有注册的事件当作参数就行。

我们要实现curry函数

下面我们实现一下curry函数:

curry函数的实现

这里有个难理解的地方是function f2(){}()这种写法,举个例子方便理解:

这种写法你懂吗?

然后我们把上面es5的写法写成es6的写法:

es6写法是不是更简洁了呢?

继续代码缩减:

我就服一下写出这种代码的人

最后,有一道curry的题大家可以做做:curry 函数

大家端午节快乐~

打代码别忘了身体健康哈,一会健身走起~

持续发布自己对一些js知识点的理解,欢迎关注

相关文章

  • [译]JavaScript中的函数柯里化

    原文 Currying in JS 函数柯里化 函数柯里化以Haskell Brooks Curry命名,柯里化是...

  • Swift Currying(柯里化)

    Swift Currying(柯里化) 标签(空格分隔): swift 函数式编程思想先举一个小例子: 显然这种编...

  • Swift函数式编程与面向协议编程

    函数式编程(FP) 一、函数式编程(FP)-高阶函数 二、函数式编程(FP) - 柯里化(Currying) 三、...

  • js柯里化

    标签: js柯里化 js柯里化 柯里化是什么在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成...

  • JS_函数柯里化

    JS_函数柯里化 与函数绑定密切相关的主体是函数柯里化(function currying),它用于创建已经设置好...

  • 【js】编程的一个重要思想----函数柯里化Currying

    先说个题外话,很多人在学redux(react管理状态流的一种思想)的时候,查了各种资料都不能真正懂redux是个...

  • 函数的柯里化和反柯里化

    一 柯里化(currying) 柯里化(currying)又称部分求值。一个currying的函数首先会接受一些参...

  • Swift需要掌握的几个要点

    函数式编程思想实用栗子: Currying(柯里化)书写方式. => 对方法进行变形, 便于重构与精简代码. 闭包...

  • JS柯里化

    柯里化简介 js柯里化(currying)又译为卡瑞化或加里化,是把接受多个参数的函数,变为可接受多次调用的函数,...

  • 手写简单.bind()实现

    手写一个实现柯里化的.bind() 柯里化:《函数柯里化小结》柯里化:前端开发者进阶之函数柯里化Currying ...

网友评论

    本文标题:【js】编程的一个重要思想----函数柯里化Currying

    本文链接:https://www.haomeiwen.com/subject/fxfhfxtx.html