一、什么是函数柯里化
Javascript高级程序设计(第3版):用于创建已经设置好了一个或多个参数的函数。基本方法是使用一个闭包返回一个函数。
维基百科:柯里化(英语:Currying),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
官方解释看得有点懵,大白话概括一下:
用大白话来说就是只传递给函数一部分参数来调用它,让它返回一个新函数去处理剩下的参数。
更简单一点就是:
- 输入是一个函数,并且这个函数拥有n个参数
- 输出也是一个函数,并且可以使用fn()()()这种方式调用
- 参数被柯里化过程中的函数被拆分
二、简单的函数柯里化案列
//普通函数
const sum= (x, y, z)=> {
return x + y + z
}
//函数柯里化
const sum = x=>{
return function(y) {
return function(z) {
return x + y + z
}
}
}
//普通函数调用
sum(1,2,3)
// 函数柯里化调用
sum(1)(2)(3)
const fn = sum(1)
const fn1 = fn(2)
fn1(3)
三、函数柯里化的作用和特点
1.参数复用
有的时候同一种规则可能会反复使用(比如校验手机的参数),这就造成了代码的重复,利用柯里化就能够消除重复,达到复用参数的目的。
柯里化的一种重要思想:降低适用范围,提高适用性
2.提前返回
提前返回或者说提前确认,函数柯里化后可以提前处理部分任务,返回一个函数处理其他任务
3.延迟执行
返回的函数都不会立即执行,而是等待调用。
三、函数柯里化的好处
- 可以把函数式编程变得简洁,没有冗余。
- 尽管有多个参数,仍然可以保留数学函数的定义。
- 可以将函数作为返回值输出,提前返回。