全部 / 前端 / 技术 · 2022年7月5日 0

56 – Currying

原文地址:https://dev.to/bhagatparwinder/currying-3hh

Curring 是一项把接受多个参数的函数转变为多个只接受一个参数的函数的技术。它是将一个函数从可调用的f(a, b, c, n)转换为可调用的f(a)(b)(c)(n)形式。

让我们以接受两个参数的函数为例:

const multiply = (a, b) => {
    return a * b;
}

console.log(multiply(4, 3)); // 12

我们将会把这个函数转变为一系列函数且每个函数只接受一个参数:

const multiply = (a) => {
    return (b) => {
        return a * b;
    }
}

console.log(multiply(4)(3)); // 12

简写形式:

const multiply = a => b => a * b;
console.log(multiply(4)(3)); // 12

外部函数接收 a 并返回一个接收 b 的函数,最终返回a和b的乘积。

Currying 通常与部分应用相关。这个想法是创建一个有两个或更多参数的函数,而我们只知道其中一些参数的值。我们可以使用部分应用(Currying)来提供已知的值,并得到一个对未知值起作用的函数作为回报(目前)。一旦剩下的参数有值,我们就可以执行返回的函数。

说实话,我在实际应用中并没有过多地使用currying。还有其他的方法可以完成我们想用 currying 做的事情(类、回调函数和高阶函数)。知道这一点很好。