测验

Currying 和部分应用之间有什么区别?

主题
闭合JavaScript
在GitHub上编辑

总结

Currying 将具有多个参数的函数转换为一系列函数,每个函数只接受一个参数。例如,函数 f(a, b, c) 变为 f(a)(b)(c)。另一方面,部分应用会固定函数的几个参数,并生成另一个具有较少参数的函数。例如,如果使用 a 部分应用 f(a, b, c),则会得到一个新函数 f'(b, c)


Currying vs 部分应用

Currying

Currying 是一种将具有多个参数的函数转换为一系列函数的技术,每个函数只接受一个参数。这允许更灵活的函数组合和重用。

示例

function add(a) {
return function (b) {
return function (c) {
return a + b + c;
};
};
}
const result = add(1)(2)(3);
console.log(result); // 6

在此示例中,add 是一个 curried 函数,它一次接受三个参数。

部分应用

部分应用是一种技术,您可以在其中固定函数的几个参数,从而生成另一个具有较少参数的函数。这对于从更通用的函数创建专门的函数很有用。

示例

function add(a, b, c) {
return a + b + c;
}
const addOne = add.bind(null, 1);
const result = addOne(2, 3);
console.log(result); // 6

在此示例中,addOne 是一个部分应用的函数,它将 add 的第一个参数固定为 1

主要区别

  • Currying:将具有多个参数的函数转换为一系列函数,每个函数只接受一个参数。
  • 部分应用:固定函数的几个参数,并生成另一个具有较少参数的函数。

延伸阅读

在GitHub上编辑
zh-CN的翻译是测试版,可能不准确。 如果您有兴趣帮助翻译,请提供反馈或联系我们