# 题目描述
实现一个 add
函数 满足 add(1,2,3)
与 add(1)(2)(3)
结果相同
# 思路
这是函数柯里化的一种基本表现形式
# 代码实现
function myAdd() { let args = [...arguments]; let fn = function () { // 合并参数 let innerArgs = [...arguments]; // let context = [...arguments][0]; return myAdd.apply(undefined, args.concat(innerArgs)); }; fn.toString = () => { return args.reduce((pre, cur) => pre + cur); }; return fn; } console.log(myAdd(1)(2)(3).toString()); console.log(myAdd(1, 2, 3).toString()); /* 6 6 */
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22