高阶函数是函数是一等公民思想的实现,它实现了函数是一等公民的后两个特征:
一、函数作为参数传递给另一个函数。它的好处是可以通过将整体功能拆解成细粒度更高的小功能进行组合,让函数变得更加灵活。同时我们在调用函数时可以不用考虑其内部是如何实现的,进而屏蔽了其内部的实现细节,因为其具体的实现都交给了被拆解出来的一个个细粒度函数来协作实现,并且每个细粒度的功能函数命名都是有实际意义的。
二、函数作为另一个函数的返回值。它其实就是让一个函数去生成另一个函数,类似面向对象编程思想中的类的实例化。
const makePow = (pow) => (num) => Math.pow(pow, num)
const pow2 = makePow(2)
const pow3 = makePow(3)
console.log(pow2(3))
console.log(pow3(2))
最后,我们总结一下高阶函数的意义:函数式编程的核心思想对运算过程进行抽象的实现方式就是高阶函数。它帮助我们在开发过程中去屏蔽细节,只要关注我们的目标就可以了。高阶函数就是用来解决抽象通用问题的。