varfn=function(a,b,c){returna+b+c;}varcurry=function(fn){varlastarr=[]returnfunctioncurrying(){lastarr=lastarr.concat([].slice.call(arguments))if(lastarr.length
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
这里为什么只是currying不是currying()前一种不是只是返回currying函数但没执行吗是的,这里返回了一个函数。所以all=curry(fn)是一个函数,all(1)也是一个函数,all(1)(2)还是一个函数。直到all(1)(2)(3)才真正调用了fn并返回了结果。
白衣非少年
TA贡献1155条经验 获得超0个赞
是的。这里有个先决条件lastarr.lengthall(1):lastarr中追加参数1,长度为1,不执行,返回函数all(1):lastarr中追加参数1,长度为2,不执行,返回函数all(1):lastarr中追加参数1,长度为3,执行,返回值(运行fn(1,1,1),返回3)all(1):lastarr中追加参数1,长度为4,执行,返回值(运行fn(1,1,1,1),返回3)
添加回答
举报
0/150
提交
取消