4.柯里化

书诚小驿2024/10/01前端面经算法JavaScript

柯里化

题目

sum(1)(2).value()、sum(1,2).value()都要输出 3,就是个柯里化。

示例

console.log(sum(1)(2).value()); // 输出: 3
console.log(sum(1, 2).value()); // 输出: 3

提示

DETAILS
  1. 柯里化函数:sum 接受任意数量的参数,并返回一个新函数 innerSum。这个新函数也能够接收更多的参数。

  2. value 方法:innerSum 对象有一个 value 方法,用于计算所有传入参数的总和。使用 reduce 来累加数组中的数字。

  3. 调用示例:可以使用 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>
最后更新时间' 2025/1/3 14:16:58