JavaScript柯里化(currying)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript柯里化(currying),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1415字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript柯里化(currying)](/upload/InfoBanner/zyjiaocheng/724/5f4740c9b29e47b690dd39c1cd03db58.jpg)
参考:
https://www.jianshu.com/p/33392cb4b055
https://ruby-china.org/topics/38385
https://stackoverflow.com/questions/36314/what-is-currying
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,
并且返回接受余下的参数且返回结果的新函数的技术。
这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的。
简单的javascript例子:
function add(x, y){ if(y===undefined){ return (z) => x + z; }else{ return x+y; } } 测试 add(1)(2)和add(1, 2)都返回3.
我理解currying,即乐高模块化,如果要写一个复杂函数,可以分解成单一功能的模块,然后组装在一起。这样每个模块就可以在其他函数进行反复调用了。
例子:
对已知数组的已知量进行加N的操作,传统的写法:
let ar= [1,2,3]; function addToArray(ar,n){ return ar.map((x)=> x+n) }; console.log(addToArray(ar,1)
但可以这么写:
const add = a => b => a+b; const addToArray = (ar,n) => ar.map(add(n)); addToArray([2,3],1)
Currying的好处:
上面连个例子结果相同,但过程不一样:
第一是新写了一个函数,对数组进行map操作,
第二则是在直接在map
里进行add
操作,这很通用,一旦你写了很多类似于add
的函数,就会方便起来,可以让我们方便的在map
,reduce
,filter
里调用。
- 能够进行延迟计算,就像add(1)(2)一样,1比2先传入,2就会被延迟计算,在特定的场景里,有一定的应用意义。
- 当你发现你要调用一个函数,并且调用参数都是一样的情况下,这个参数就可以被柯里化,以便更好的完成任务。
- 优雅的写法,允许你写出来的代码更干净、更有表达力。
虽然柯里化在日常应用不多,但仍然是一个不可不了解的好概念。
内容总结
以上是互联网集市为您收集整理的JavaScript柯里化(currying)全部内容,希望文章能够帮你解决JavaScript柯里化(currying)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。