# 题目描述
实现一个 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
*/
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