彻底搞懂 JavaScript 闭包:你只需要这个例子!

闭包是什么? 有什么用? 为什么它会造成内存泄漏?

相信很多人被这些问题困扰过。今天我们不啰嗦,一句话 + 一个经典例子,让你真正吃透闭包原理。

📌一句话理解闭包:

闭包是函数 + 它能访问的自由变量的组合。

换句话说:

函数内部访问了函数外部的变量,这个函数就“形成了闭包”。

🔧经典闭包示例:

js

复制编辑

function createCounter() {

let count = 0

return function () {

count++

console.log(count)

}

}

const counter = createCounter()

counter() // 1

counter() // 2

🔍这里发生了什么?

  • createCounter() 返回了一个匿名函数;
  • 这个匿名函数记住了 count 变量
  • 每次调用 counter(),它都还能访问 count 并累加。

这就形成了闭包!

🎯闭包的作用:

应用场景说明数据私有化外部无法直接修改 count,只能通过闭包修改记忆缓存闭包可用于缓存上一次结果函数工厂可以返回一组带有私有状态的函数

🧠常见误区:

js

复制编辑

var funcs = []

jrhz.info

for (var i = 0; i < 3; i++) {

funcs.push(function () {

console.log(i)

})

}

funcs[0]() // 3 ❗不是 0

funcs[1]() // 3 ❗不是 1

funcs[2]() // 3 ❗不是 2

为什么?因为所有函数都共享了同一个 i(3),而不是各自记住一个。

✅正确做法(使用 let 块级作用域):

js

复制编辑

for (let i = 0; i < 3; i++) {

funcs.push(() => console.log(i))

}

或者用立即执行函数(IIFE)创建闭包:

js

复制编辑

for (var i = 0; i < 3; i++) {

(function (j) {

funcs.push(() => console.log(j))

})(i)

}

🚨闭包缺点:内存泄漏

因为闭包长期引用外部变量,导致这些变量无法被垃圾回收,特别是搭配 DOM、定时器使用时。

✅解决方式:及时解除引用或封装合理作用域。

https://blog.csdn.net/qqqdqd/article/details/149209167

https://blog.csdn.net/qqqdqd/article/details/149209090

https://blog.csdn.net/qqqdqd/article/details/149208922

https://blog.csdn.net/qqqdqd/article/details/149209254

特别声明:[彻底搞懂 JavaScript 闭包:你只需要这个例子!] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

他是郭靖的继承者,杨逍死于他手,张无忌却心生畏惧,不敢报仇(郭靖是哪部小说里的人物)

很多人觉得张无忌的性格算是善良,但从我的角度看,这更像是一种懦弱,这种懦弱不仅没有任何益处,反而常常让自己和他人都受到伤害。导致他死亡的人,正是郭靖的继承者,张无忌虽然对他心存畏惧,但始终不敢报仇。杨逍虽然没…

他是郭靖的继承者,杨逍死于他手,张无忌却心生畏惧,不敢报仇(郭靖是哪部小说里的人物)

杭州高强纸管,厚纸管批发(杭州纸管企业名单)

在纺织行业,纱线在生产、存储和运输过程中,需要借助纸管进行缠绕收纳,杭州高强纸管能够稳定地承载纱线,防止纱线在缠绕过程中出现松散、断裂等问题,保障纺织生产的顺利进行;在包装行业,薄膜类产品的包装和运输离不开纸…

杭州高强纸管,厚纸管批发(杭州纸管企业名单)

自闭症男童苍山遇难父母现状 全家用爱托举孩子(自闭症男童苍山遇难)

儿子在大理遇难后,郭凯和丈夫王庚的日子仿佛退回到了儿子出生前。他们从房山搬回了婚前住的房子,四十平米,勉强应付日常起居。更多的时候,房子里空落落的,王庚一周七天扎在单位加班,原本照看外孙的姥姥和姥爷,第一次回了老家

自闭症男童苍山遇难父母现状 全家用爱托举孩子(自闭症男童苍山遇难)

体检10年未查出癌症,确诊已是晚期!卫健委答复:未发现体检结果造假 官方回应质疑(十年未体检恐惧体检)

北京市卫生健康委员会近日向张晓玲出具了关于其投诉的答复意见书。今年7月,律师张晓玲在『社交平台』实名投诉称,她在爱康国宾、北大医疗康复医院体检十年未查出癌症风险,确诊时已是癌症晚期,此事迅速引起网络关注

体检10年未查出癌症,确诊已是晚期!卫健委答复:未发现体检结果造假 官方回应质疑(十年未体检恐惧体检)

光格科技:光格科技近日参加了第四届核电电气技术交流会(光格文化传播有限公司)

证券日报网讯12月18日,光格科技在互动平台回答投资者提问时表示,光格科技近日参加了第四届核电电气技术交流会,重点展示了面向核电行业高标准需求打造的先进监控与运维产品矩阵。(编辑 楚丽君)…

光格科技:光格科技近日参加了第四届核电电气技术交流会(光格文化传播有限公司)