function curry(fn,argLength,argList) { return function (a) { let newargList = [a] if(argList){ newargList = argList.slice(0) newargList.push(a) } return argLength === 1 ? fn.apply(this, newargList) : curry(fn, argLength - 1, newargList) } } function addTwoNum(a,b) { return a+b } function addThreeNum(a, b,c) { return a + b + c } let curryAdd = curry(addThreeNum,3) let oneAdd = curryAdd(1) let oneAddtwoAdd = oneAdd(2) console.log(oneAdd) oneAdd(6) console.log(oneAddtwoAdd(3))