sum(1, 2, 3) => 6
sum(1)(2)(3)() => 6
话不多说
function foo (arr) {
let result = null;
for (let i = 0; i < arr.length; i++) {
result += arr[i]
}
return result
}
function curry (fn, args) {
let arr = args || [].concat(args)
return function sum (sarg) {
if (sarg) {
Array.isArray(sarg) ? arr = arr.concat(sarg) : arr.push(sarg)
return sum
} else {
console.log(fn.call(this, arr));
}
}
}
//curry(foo,[1, 2])([11, 22, 33])(1)([1, 2])() => 73