函数柯里化

一、是什么

把多参数函数转换为单参数函数。

二、为什么

  • 参数复用
  • 延迟执行
  • 提高函数组合能力

三、实现原理

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    }
    return (...next) => curried(...args, ...next);
  };
}

四、示例

function add(a, b, c) {
  return a + b + c;
}

const curried = curry(add);

curried(1)(2)(3); // 6

五、总结

  • 柯里化核心:收集参数
  • 常用于函数式编程