什么是函数柯里化?
函数柯里化就将一个多参数的函数转换为只能接收一个参数的函数。通过柯里化,可以将函数的参数逐步应用,形成一个参数序列,使得函数的调用更加灵活,方便参数的复用和定制。
简单来说就是简化函数的参数接收,将多个参数尽可能的变少
简单示例
javascript
// 普通的加法函数
function add(x, y) {
return x + y;
}
console.log(add(2, 3)) // 输出 5
// 使用柯里化转换的加法函数
function curryAdd(x) {
return function(y) {
return x + y;
}
}
const addTwo = curryAdd(2);
console.log(addTwo(3)); // 输出 5
大家可能会觉得这样做多此一举,直接传2个参数不更好吗,根据这个代码来说确实如此。
但有些场景使用函数柯里化就显得非常 Nice
应用场景
参数冗余
常规实现:参数过于冗余
javascript
function url(proto, host, patch) {
return `${proto}${host}${patch}`
}
url('https://', 'liuyuyang.net', '/api/get/1')
url('https://', 'liuyuyang.net', '/api/post')
柯里化实现:减少参数冗余
javascript
function url(proto, host) {
return function (patch) {
return `${proto}${host}${patch}`
}
}
const newUrl = url('https://', 'liuyuyang.net')
newUrl('/api/get/1')
newUrl('/api/post')
延迟执行
javascript
function fn() {
console.log("在执行内部函数之前做一些事情");
return function () {
// 代码逻辑
}
}
const newFn = fn()
newFn()
函数柯里化在函数式编程中非常常见,它能够提高代码的可读性、可维护性和可复用性,使代码更加灵活和模块化。