回调函数

回调函数是:在一个函数中,又调用了一个函数,叫回调函数
例如:

  1. <button id="btn">按钮</button>
  2. <script>
  3. const btn = document.getElementById('btn')
  4. btn.addEventListener('click', () => {
  5. console.log('这是回调函数')
  6. })
  7. </script>

比如这个点击事件,通过函数 addEventListener 定义点击事件,参数是传入的另一个函数,那么这样的函数就称之为回调函数。

还有就是数组常用的 map 方法等等:

  1. const res2 = list.map((item) => {
  2. item.age += 30
  3. return item
  4. })

当出现类似下面这样的业务时候,一个回调函数里面又套了回调函数,请求时就是等这段代码结果产生之后再执行,那么这样回调套回调就会很麻烦了,不利于阅读,开发维护都麻烦

回调地狱就是下面的情况

  1. axios({
  2. method: '',
  3. url: ''
  4. }).then((res) => {
  5. axios({
  6. method: '',
  7. url: ''
  8. }).then((res) => {
  9. axios({
  10. method: '',
  11. url: ''
  12. }).then((res) => {})
  13. })
  14. })

递归调用函数

递归

在函数的内部执行函数本身称为递归,递归的本质是一个循环

  1. function f() {
  2. console.log(1)
  3. f() // 递归
  4. }
  5. f() // 没有条件阻止,递归就是一个死循环
  6. // 1
  7. // 1
  8. // ...

使用递归实现递减

设置一个条件。

  1. function minus(n) {
  2. if (n === 0) return // 条件,到 0 退出
  3. console.log(n)
  4. minus(n - 1) // 递归 - 1
  5. }
  6. minus(5)
  7. // 5
  8. // 4
  9. // 3
  10. // 2
  11. // 1

隐含的两个参数arguments和this

调用函数的方式

处理函数上下文