Currying 和部分应用之间有什么区别?
主题
闭合JavaScript
总结
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:将具有多个参数的函数转换为一系列函数,每个函数只接受一个参数。
- 部分应用:固定函数的几个参数,并生成另一个具有较少参数的函数。