部分申请

与 currying 类似,部分应用程序用于减少传递给函数的参数数量。与 currying 不同,这个数字不必一个一个。

例:

这个功能……

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

…可用于创建另一个函数,该函数总是乘以 2,然后将 10 加到传递的值上;

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

function factory(b, c) {
    return reversedMultiplyThenAdd.bind(null, c, b);
}

var multiplyTwoThenAddTen = factory(2, 10);
multiplyTwoThenAddTen(10); // 30

部分应用的应用部分仅仅意味着固定功能的参数。