与柯里化定义类似:函数柯里化的实现_前端-pww的博客-优快云博客
判断下一个括号中是否有参数,如果有就拼接参数,继续调用curry函数
如果没有参数,则直接返回fn
function add1 (...args) {
//求和
return args.reduce((a, b) => a + b)
}
function currying (fn,...args) {
return function(...rest) {
if (rest.length) {
return currying(fn,...args,...rest)
} else {
return fn.call(this,...args)
}
}
}
let add = currying(add1)
console.log(add(1)(2)(3)(4, 5)()) //15
console.log(add(1)(2)(3, 4, 5)()) //15
console.log(add(1)(2, 3, 4, 5)()) //15