4.柯里化
柯里化
题目
sum(1)(2).value()、sum(1,2).value()都要输出 3,就是个柯里化。
示例
console.log(sum(1)(2).value()); // 输出: 3
console.log(sum(1, 2).value()); // 输出: 3
提示
DETAILS
- 柯里化函数:sum 接受任意数量的参数,并返回一个新函数 innerSum。这个新函数也能够接收更多的参数。 
- value 方法:innerSum 对象有一个 value 方法,用于计算所有传入参数的总和。使用 reduce 来累加数组中的数字。 
- 调用示例:可以使用 sum(1)(2).value() 或 sum(1, 2).value() 两种方式来获取结果。 
参考答案
DETAILS
<script>
    function sum(...args) {
      const innerSum = (...nextArgs) => {
        // 递归调用来支持柯里化
        return sum(...args, ...nextArgs);
      };
      innerSum.value = () => {
        // 计算所有传入参数的总和
        return args.reduce((acc, curr) => acc + curr, 0);
      };
      return innerSum;
    }
    // 示例使用
    console.log(sum(1)(2).value()); // 输出: 3
    console.log(sum(1, 2).value()); // 输出: 3
  </script>
