currying in javascript-js柯里化

来源:互联网 发布:node sass失败 编辑:程序博客网 时间:2024/05/21 07:09

        柯里化是指将一个多参数的函数转化成更少参数的函数,专业解释看维基百科。柯里化实现是通过把参数列表中的某些参数绑定到首先被调用的函数里,这样这些参数就附加到下一次的调用里。这个有个表现柯里化样子的例子:


        babyAnimals是一个柯里化的方法。它的作用是在函数本身彻底执行完之前,对第一个参数的包装。 ‘koalas’被绑定到babyAnimals上,那么我对多个动物的喜欢就能够很容易表达而不仅仅是大象。

        柯里化能够被集成到回调里来创建高层次的”工厂“函数。在事件处理时这种模式非常有用,它能够替代在nodejs里使用的回调模式。(关于这种模式,Brun Jouhi有篇介绍它的很好文章)。这儿是一个关于nodejs处理文件的柯里化应用:


        首先,它看起来好像没发生什么,但是这中模式确实很强大。在nodejs里使用柯里化能够把读取的数据传给其他能够处理该数据的方法。我们能够延迟调用回调方法,直到我们需要时。柯里化的nodejs方法也适用一系列并行I/O的多文件处理,很想nodejs里的 async 库。

        柯里化不是js的本地模式,它经常方便的写一些工具方法,它们能将传递的方法转化成柯里化版的自己。




        现在我们可以通过把一个方法作为第一个参数传递给currier,就能够应用柯里化。

        这就是柯里化。我希望你能够学到一些关于这种强大技术的新东西!你有柯里化的例子分享吗?如果有,请把它写成一个代码片段留在评论里。

原文:

        https://medium.com/the-javascript-collection/ce6da2d324fe