请实现一个 add 函数,满足以下功能

题目如下

add(1).getValue(); 	// 1
add(1)(2).getValue();  	// 3
add(1)(2)(3).getValue();  // 6
add(1)(2, 3).getValue();   // 6
add(1, 2)(3).getValue();   // 6
add(1, 2, 3).getValue();   // 6

解法

function add(...args) {
  function innerAdd(...innerArgs) {
    args.push(...innerArgs);
    return innerAdd;
  }

  innerAdd.getValue = function() {
    return args.reduce((acc, curr) => acc + curr, 0);
  };

  return innerAdd;
}


// console.log(add(1)(2).getValue()); // 输出: 3