一、高阶函数
基本概念
满足下列条件之一,即为高阶函数
- 一个函数接收的参数也是一个函数。
- 一个函数返回的也是一个函数。
简单示例
给大家一个例子看一下:
以下的fun以及fun1两个函数都可以称为高阶函数。
function fun(callback){
console.log('执行fun函数')
callback()
}
function back(){
console.log('执行back函数')
}
fun(back) //接收一个函数作为参数
function fun1(){
console.log('执行fun函数')
return function back1(){
console.log('执行back函数')
}
}
console.log(fun1()()) //调用该fun1函数时会返回一个函数
看到这里相信大家已经明白了高阶函数是什么了,是不是一个很简单的东西。那接下来我们再来看看在我们常用的函数中有哪些函数是高阶函数吧。
常见高阶函数
Promise、定时器(setTimeout、setInterval)、数组方法(map,some…)等等
高阶函数很简单,那接下来我们再看看函数柯里化是什么意思呢?
函数柯里化
基本概念
- 通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数形式。
通过这个概念可能大家还不是太明白,再看看例子应该就会觉得非常简单了
//普通函数求和
function sum(x,y,z){
return (x + y + z);
}
console.log(sum(1,2,3)) //这是普通函数求和的方式
//函数柯里化求和
function sum(x){
return(y)=>{
return (z)=>{
return x + y + z
}
}
}
console.log(sum(1)(2)(3)) //通过不断调用返回函数的方式最后统一处理得到的值
应用场景
函数的柯里化在一些第一个参数不需要变化,主要对第二个参数来进行计算的时候很有用。比如 货币换算。这样和用单个函数来进行计算相比较的话是不是显得更优雅了呢
const exchange = (num) => {
return function (num1) {
return num * num1
}
}
let exchangeRate = 0.86 //汇率
let count = exchange(exchangeRate)
console.log(count(100)); //直接输入换算的金额
高阶函数以及函数的柯里化可能对于刚入门的新手来说是一个懵懂的概念,甚至会以为是什么高级的东西。但是在稍微有了一些函数基础后再通过看一遍这篇博文,我相信你能很清楚这些东西都是非常简单的。那本次分享就先到这里了,谢谢大家