问题:编写函数要求函数实现 add(1)(2)(3)(4)(5) 返回所有参数的累加和15。

说明 编写的add函数需满足通用性要求。

1
2
3
4
函数调用 add(1)(2)          返回值 3
函数调用 add(1)(2)(3) 返回值 6
函数调用 add(1)(2)(3)(4) 返回值 10
...以此类推

方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let add = (m) => {
let fn = (n) => add(m + n);
fn.toString = () => m;
return fn;
}

/* 测试数据 */
let res1 = add(1);
let res2 = add(1)(2);
let res3 = add(1)(2)(3);
let res4 = add(1)(2)(3)(4);
let res5 = add(1)(2)(3)(4)(5);

console.log(res1, res2, res3, res4, res5); /* ƒ 1 ƒ 3 ƒ 6 ƒ 10 ƒ 15 ƒ 3 */