大前端-简单易懂的函数柯里化

120 阅读1分钟

柯里化

函数柯里化(Currying)是一种将接受多个参数的函数转换为一系列接受单个参数的函数的技术。这种转换过程是通过部分应用(Partial Application)实现的。

下面让我们来举一个简单的例子
// 原始函数
function add(a, b, c) {
  return a + b + c;
}

// 使用函数柯里化转换的新函数
function curriedAdd(a) {
  return function(b) {
    return function(c) {
      return a + b + c;
    }
  }
}

// 使用原始函数
const result1 = add(1, 2, 3); // 结果为 6

// 使用柯里化后的函数
const curriedResult = curriedAdd(1)(2)(3); // 结果为 6

聪明的你一定看懂了,那我们再进阶一下
// 原始函数
function add(a, b, c) {
  return a + b + c;
}

// 柯里化函数
function curryAdd(a) {
  return function(b) {
    return function(c) {
      return a + b + c;
    };
  };
}

// 使用柯里化函数进行部分应用
const addTwo = curryAdd(2); // 固定第一个参数为2
const addFive = addTwo(3); // 固定第二个参数为3

console.log(addTwo(3)(4)); // 输出: 9
console.log(addFive(5)); // 输出: 10

没错,函数柯里化使得函数调用更加灵活和可复用。我们可以根据需要对函数进行部分应用,固定部分参数,以便在后续的调用中更方便地处理剩余参数。这样可以减少重复的代码,并提高代码的可读性和可维护性。