PENGINE
算法
数据库
前端
后端
工具
js闭包函数的意义
2026-08-22 14:33:17

js的闭包函数形式上是函数里面套函数,并返回被套在里面的函数。 其核心意义在于:让一个函数能够“记住”它创建时所在作用域中的变量,即使这个作用域已经执行结束。 例如普通函数:

function add() {
    let count = 0
    count++
    console.log(count)
}

add() // 1
add() // 1
add() // 1

但使用闭包函数:

function createAdd() {
    let count = 0
    return function () {
        count++
        console.log(count)
    }
}
const add = createAdd()
add() // 1
add() // 2
add() // 3

很明显,闭包函数记住了变量count。原因是:虽然createAdd函数执行完了 ,但是返回的函数还在引用这count,因此垃圾回收器发现它还在使用,因此不会回收。count成为持久化状态。亦可以把闭包理解为:函数 + 其私有数据。其私有数据外部不可访问,但内部函数可以操作。

闭包的用途:
1 保存状态
function createCounter() {
  let count = 0

  return () => ++count
}

2 创建私有变量
function createUser() {
  let password = '123456'

  return {
    checkPassword(value) {
      return value === password
    }
  }
}
3 创建函数工厂
function multiply(x) {
  return function (y) {
    return x * y
  }
}

const double = multiply(2)
const triple = multiply(3)

double(5) // 10
triple(5) // 15

Vue3 源码里响应式 API、watch、computed、effect等都使用了闭包函数。

辽ICP备15018437号-3