var fn = function(a, b, c) {
return a + b + c;
}
var curry = function(fn) {
var lastarr = []
return function currying () {
lastarr = lastarr.concat([].slice.call(arguments))
if (lastarr.length < fn.length) {
console.log(currying);
return currying ========这里为什么只是currying不是currying() 前一种不是只是返回currying函数但没执行吗
}
return fn.apply(arguments, lastarr)
}
}
var all = curry(fn)
console.log(all(1)(2)(3));
是的,这里返回了一个函数。
所以
all=curry(fn)
是一个函数,all(1)
也是一个函数,all(1)(2)
还是一个函数。直到
all(1)(2)(3)
才真正调用了fn
并返回了结果。