方法一
function add(...args){
console.log('args',...args)
return args.reduce((a,b)=> a+parseInt(b))
}
function currying(fn){
let args=[]
return function temp(...newArgs){
console.log('newArgs',newArgs)
if(newArgs.length){
args = args.concat(newArgs)// [...args, newArgs]
return temp
} else {
let val = fn.apply(this, args)
console.log('val',val)
args = []
return val
}
}
}
let addCurry = currying(add)
console.log(addCurry(1)(2)(3)(4, 5)())
console.log(addCurry(1)(2, 3, 4, 5)())
方法二
function add(obj){
let args = [].concat(obj)
return function temp(...newArgs){
// console.log('newArgs',newArgs)
if(newArgs.length){
args = args.concat(newArgs)
return temp
}else{
console.log('args',args)
return args.reduce((total,item) => total + item)
}
}
}
console.log(add(1)(2)(3)(4, 5)())
console.log(add(1)(2, 3, 4, 5)())