为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS函数柯里化

关于JS函数柯里化

慕侠2389804 2019-05-25 14:29:44
1.js函数柯里化有什么好处呢?感觉看了一些网站的讲解还是很模糊,比如:functionadd(a,b){returna+b;}functioncurryingAdd(a){returnfunction(b){returna+b;}}add(1,2);//3curryingAdd(1)(2);//3都可以实现add功能,那柯里化的好处在哪呢?2.什么情况下要用柯里化呢?最好能举一些简单易懂的例子。
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

curry函数可以接受一个函数,我们暂且称之为原始函数,返回的也是一个函数,柯里化函数,这个返回的柯里化函数功能十分强大,他在执行的过程中,不断的返回一个贮存了传入参数的函数,直到触发了原始函数执行的条件。这么说比较概括,那么就举个例子来说明一下:
原始函数:
varadd=(x,y)=>x+y
柯里化函数:
varcurryAdd=curry(add)
这个add需要两个参数,但是我们的curryAdd执行可以传入更少的参数,当传入的参数少于add需要的参数的时候,add函数并不会执行,curryAdd就会将这个参数记下来,并且返回另外一个函数,这个函数可以继续执行传入参数,我们会有一个变量专门记录传入参数的情况,如果传入参数的总数等于add需要参数的总数,我们就激活了原始参数执行,就会返回我们想要的结果。
//此时只传入了一个参数根据判断返回的是一个函数
varadd2=curryAdd(2)
//add2=function(...){}
//此时累计传入了两个参数等于了add需要参数的总和所以返回的是一个结果
//相当于执行了add(2)(3)
varresult=add2(3)
//result=5
curry的原理实现可以看我写的文章
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信