回调函数以及闭包的应用

72 阅读1分钟

回调函数的概念

回调函数是一个作为参数传递给另一个函数的函数,并且在特定的事件或条件发生时由接收函数执行。 回调函数的主要目的是实现异步操作或者处理一些在主流程之外的逻辑。它允许在某个操作完成、数据准备好、事件触发等情况下执行特定的代码逻辑。

例如,在 JavaScript 中常见的回调函数场景包括:

  • 异步的文件读取操作完成后执行的处理逻辑。
  • 网络请求成功或失败时的处理逻辑。
  • 事件监听器中的处理函数,当特定事件(如点击、鼠标移动等)发生时执行。 回调函数使得代码的执行流程更加灵活和可控,可以根据不同的情况执行不同的逻辑,增强了程序的交互性和响应性。

回调函数的应用

const callbackFun = function (callback: (value: number) => void) {
  let timeOut = 0
  setInterval(() => {
    callback(timeOut++)
  }, 1000)
}

callbackFun((value: number) => {
  console.log('回调的值 === ', value)
})

闭包的概念

闭包是指有权访问另一个函数作用域中的变量的函数。 即使外部函数已经执行完毕,闭包仍能记住并访问其作用域中的变量。这是因为闭包会在其创建的环境中保留对这些变量的引用。 闭包使得函数可以拥有“私有”变量,并且这些变量在函数多次调用之间得以保持其状态。

闭包的应用

function createCounter() {
  let count = 0
  function getCount() {
    return count++
  }
  return {
    getCount,
    count
  }
}

let counter = createCounter()
console.log(counter.getCount()) //0
console.log(counter.getCount()) //1
console.log(counter.count) //0 (题外话,可以使用ref let count = ref(0),变成响应式,这样可以获取到最新的count值)