# 高阶函数

# 高阶函数的概念

  • 1、一个函数返回一个函数。
  • 2、一个函数可以接收函数作为参数。

上述两个条件只要满足一个就可以称作高阶函数,回调函数是高阶函数的一种。

# 高阶函数的应用

那高阶函数有什么实际应用呢?可以扩展方法,比如我们有一个core函数,定义如下

// ... 剩余运算符将args转变成一个数组
function core(...args) {
  // 核心代码
  console.log("core",args)
  // ...
}
1
2
3
4
5
6

我们想给core函数增加一些额外的逻辑,但是,我们并不想更改core函数里面的代码,因为里面的代码改动的影响很大。我们可以创建一个 before函数。before函数接收一个回调函数作为参数。

剩余运算符和扩展运算符的学习链接 (opens new window)

在函数调用的时候 ... 称为:扩展运算符 在函数定义或者声明时候 ... 称为:剩余运算符

Function.prototype.before = function(cb) {
  // 这个函数就是newCore ...args 是剩余运算符 传入的a,b 参数会被放入数组中
  return (...args) => {
    console.log(args[0]) // a
    console.log(args[1]) // b
    cb()
    // 调用时候使用扩展运算符传递参数
    // 箭头函数没有自己的this会沿着作用域链向上查找
    this(...args)
  }
}
// 调用
let newCore = core.before(() => {
  console.log("before")
})
// 调用这个函数
newCore("a", "b")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

有了高阶函数,方便对原有函数进行扩展。

最后更新时间: 3/9/2022, 6:54:04 AM