varfn=function(a,b,c){returna+b+c;}varcurry=function(fn){varlastarr=[]returnfunctioncurrying(){lastarr=lastarr.concat([].slice.call(arguments))if(lastarr.length
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
这里为什么只是currying不是currying()前一种不是只是返回currying函数但没执行吗是的,这里返回了一个函数。所以all=curry(fn)是一个函数,all(1)也是一个函数,all(1)(2)还是一个函数。直到all(1)(2)(3)才真正调用了fn并返回了结果。
牛魔王的故事
TA贡献1830条经验 获得超3个赞
是的。这里有个先决条件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
提交
取消