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等都使用了闭包函数。