function add(x, y, z) {
return x + y + z
}
function myCurring(fn) {
return function curried(...args) {
//当参数大于等于原函数参数可直接调用函数
if (fn.length <= args.length) {
return fn.apply(this, args)
} else {
//递归调用来添加新的参数直到参数个数达到原函数参数个数
return function (...args1) {
return curried.apply(this, [...args, ...args1])
}
}
}
}
//test
let curryAdd = myCurring(add)
// let result = curryAdd(10)(20)(30)
let result = curryAdd(10,20)(30)
console.log(result) //60
04-25
10-10
477