JS一千问(1):在JavaScript中柯里化是什么意思?

柯里化(Currying)是一种高级用法,可以将一个参数为n的函数转换为n个参数为1或更少的函数。

柯里化函数示例:

// 求和
function sum (x) {
  return function(y){
    return x + y;
  }
}

sum(1)(3);

一个函数f(x, y)经过柯里化,会被变换成f(x)(y)。

使用柯里化技术,我们不改变函数的功能,只是改变调用它的方式。

// 求乘积
function multiply(x, y){
  return x * y;
}

function calc(fun){
  return function(x){
    return function(y){
      return fun(x, y);
    }
  }
}

let handle = calc(multiply);

multiply(3, 6); // 18

handle(3)(6); // 18

正如我们在上面的代码中所看到的,我们已经将函数multiply(x,y)转换为函数handle,它一次接受一个参数。

两种调用方式结果完全一样。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注