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