彻底搞懂 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 闭包:你只需要这个例子!] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

刘浩存下班就这么萌萌地走开!(刘浩存哭了)

刘浩存最新下班路透直接把全网心都萌化了,这姐的下班状态简直是内娱甜妹天花板,看完谁不喊一句存子好会!还有人玩梗:存子这下班速度,主打一个“下班不积极,思想有问题”,咱打工人狠狠共情了! 果然好看的皮囊千篇一律…

刘浩存下班就这么萌萌地走开!(刘浩存哭了)

AI+湖南简思保温杯内胆气缸自动上下料抛光方案(简思品牌)

本方案针对保温杯内胆抛光加工的自动化需求,提供高精度、高效率的气缸自动上下料解决方案:以简思『触摸屏』一体机为核心电控单元,搭配多组微型高精度气缸执行机构、内胆专用柔性装夹模块与抛光设备协同模块,构建全流程自动…

AI+湖南简思保温杯内胆气缸自动上下料抛光方案(简思品牌)

董卿突然又上热搜,网友吵翻天,春晚到底要不要她?。(董卿突然承认)

评论区简直是骂声一片,很多人都在吐槽现在的春晚主持人水平,仿佛眼下的主持人已难以让人安心。特别有一条评论让我印象深刻,有网友说道:以前每次看春晚,只要是董卿主持就能让人放心,换了别人,真的是翻车。但董卿机智地…

董卿突然又上热搜,网友吵翻天,春晚到底要不要她?。(董卿突然承认)

为什么很多人读 ITIL第5版,会隐约觉得“哪里不一样了”?(为什么很多人读结su)

但如果你继续往下读,很可能会慢慢意识到一件事: ITIL第5版,并不是在原有体系上“修修补补”,而是在悄悄改变它试图解决的问题边界。支撑业务连续性 提供标准化能力 降低系统性风险那么,IT 服务管理是一…

为什么很多人读 ITIL第5版,会隐约觉得“哪里不一样了”?(为什么很多人读结su)

开市客代购大成八宝饭680克,适合2026年的年夜饭还是午夜饭?(开市客购买攻略)

开市客大成八宝饭作为速食年夜饭和午夜饭选择,凭借其680克足量分量、经典口味,在繁忙生活节奏中提供便捷解决方案。本文深度解析如何选对年夜饭速食,从口感、成本、适用场景等方面全面对比。

开市客代购大成八宝饭680克,适合2026年的年夜饭还是午夜饭?(开市客购买攻略)