发布于 2026-01-06 2 阅读
0

咖喱!?

咖喱!?

我相信大家都知道 JavaScript 中的柯里化是什么。如果不知道也没关系,我这就解释清楚。

很多人都了解柯里化的理论,但真正能将其付诸实践的人却不多。其实,实现柯里化非常简单!

那么,什么是咖喱化?

柯里化是一种将具有多个参数的函数分解为一系列具有较少参数的函数的技术。

假设一个函数可以接受 3 个参数,我们可以将这个函数柯里化成 3 个各接受 1 个参数的函数序列,或者柯里化成 2 个分别接受 2 个和 1 个参数的函数。所以,基本上,柯里化函数可以减少它接受的参数数量,但仍然执行它原本应该执行的所有操作。

我相信通过这段代码,你会更好地理解这一点。

//Function 1
const sum  = function (a) {
    return function (b) {
      if (b) {
        return sum(a+b);
      }
      return a;
    }
};
//Function 2
function num_sum(a, b){
   return a+b;
}
num_sum(1,2);
sum(1)(2)(3)..(n);
Enter fullscreen mode Exit fullscreen mode

函数 2 是传统的加法运算方式。函数 1 是同一个函数的柯里化版本,我们减少了每个函数的参数数量。柯里化运用了许多概念,例如高阶函数,我们可以返回一个函数,将其赋值给一个值,甚至将其作为参数传递给另一个函数!

让我向您展示同一个求和函数的另一种柯里化变体:

function sum(a,b){  
 return a + b;
}

function curry(f){
   return function(a){
       return function(b){
           return f(a,b);
       }
   }
}

let curriedSum = curry(sum);

let ans = curriedSum(1)(2);
Enter fullscreen mode Exit fullscreen mode

在这个例子中,我们对一个已有的函数进行了柯里化。简单来说,通过柯里化,我们可以根据需要,在程序的不同部分使用该函数并传入不同数量的参数。

柯里化的优点:
1)柯里化可以避免重复传递同一个变量。2
)它有助于创建高阶函数,在事件处理中非常有用。3
)可以轻松编写和重用少量代码片段。

文章来源:https://dev.to/revanthrev23/currying-o2h