定义

A higher order function is a function that takes a function as an argument, or returns a function 高阶函数:包含函数参数或者返回值是一个函数的函数


示例1

image.png
上面的代码中显示了函数是可以传入其他函数中的。其中applyOperation 函数可以将任意的 opt 函数应用于前两个参数


示例2

再来看另一个例子:

image.png

上面的代码中,add函数接受一个参数,并返回另一个接受第二个参数并把他们加起来的函数


示例3

再来看一个例子:假设需要打印住在美国的人员名单。

一开始的命令式代码可能是这样的:
image.png


如果我们还需要打印其他国家的人。通过高阶函数,可以很好抽象出应用于每个人的操作,那就是控制台的打印逻辑。
这里我们给高阶 printPeople 提供任何action函数:
image.png


基于函数的高阶特性,我们还可以做如下的重构:
image.png

通过使用高阶函数,开始呈现出声明式的模式。表达式清晰地描述了程序需要做的事情

我们需要拥抱函数式编程的这种心态,你需要告诉程序做什么,而不关系怎么做

我们把需要做的事情,一件一件拆分开用函数来表达,最后通过高阶函数将每一小件事情组合起来,完成整个项目。
而不是命令式地告诉程序先做什么,后做什么