什么是高阶函数?

可以把函数作为参数传递给另外一个函数,可以把函数作为另一个函数的返回结果。就像我们平时调用函数,一般都是传递值类型或者对象和数组等参数,或者是函数返回结果是值类型或者是对象和数组,高阶函数就是把上面提到的值类型、对象、数组改为函数。

优点

  • 函数作为参数,可以使我们这个函数变得更灵活

使用高阶函数的意义

  • 抽象(封装)可以帮我们屏蔽细节,只需要关注与我们要实现的目标
  • 高阶函数是用来抽象通用的问题
  • 可以简化我们的代码

ES5、ES6中常用的高阶函数

  • forEach
  • map
  • filter
  • every
  • some
  • find
  • findIndex
  • reduce
  • sort


案例

面向对象方式:

  1. const array = [1, 2, 3, 4];
  2. for (let i = 0; i < array.length; i++) {
  3. console.log(array[i]);
  4. }

高阶函数方式:

  1. // 抽象循环功能
  2. function forEach(array, fn) {
  3. for (let i = 0; i < array.length; i++) {
  4. fn(array[i]);
  5. }
  6. }
  7. // 定义数据
  8. const arr = [1, 3, 4, 7, 8];
  9. // 调用函数,传入函数作为参数
  10. forEach(arr, (item) => {
  11. console.log(item);
  12. });