柯里化实现add函数
// 实现一个add方法,使计算结果能够满足如下预期: // add(1)(2)(3) == 6 // true // add(1, 2, 3)(4) == 10 // true // add(1)(2)(3)(4)(5) == 15 // true
function add(...args) {
let sum = args.reduce((a, b) => a + b, 0);
function fn(...nextArgs) {
sum += nextArgs.reduce((a, b) => a + b, 0);
return fn;
}
fn.valueOf = () => sum;
fn.toString = () => String(sum);
fn[Symbol.toPrimitive] = () => sum;
return fn;
}
