1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| const curry = function(fn) { const len = fn.length; return function t() { const innerLength = arguments.length; const args = Array.prototype.slice.call(arguments); if (innerLength >= len) { return fn.apply(undefined, args)
} else { return function () { const innerArgs = Array.prototype.slice.call(arguments); const allArgs = args.concat(innerArgs); return t.apply(undefined, allArgs) } } } }
function add (num1, num2, num3, num4, num5) { return num1 + num2 + num3 + num4 + num5; }
const finalFun = curry(add); const result1 = finalFun(1)(2)(3)(4)(5); const result2 = finalFun(1, 2)(3)(4)(5); const result3 = finalFun(1,2,3)(4)(5); const result4 = finalFun(1,2,3)(4, 5);
console.log(result1, result2, result3, result4);
|