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

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

猜你喜欢

自动感应门及特种门的应用与优势(自动感应门说明书)

司法系统相关单位,如监狱、看守所、戒毒所等对安防要求极高的场所,是其主要受众,该门的高强度防护等特性可有效防止人员逃脱与非法闯入,保障监管安全。在监狱、看守所,它为监舍提供相对独立、安静的空间,保障在押人员的…

自动感应门及特种门的应用与优势(自动感应门说明书)

郭麒麟:为梦想减重70斤,克服困难,成就了风生水起的生活(郭麒麟的梦想)

母亲胡中惠已经离去了很久,而父亲『郭德纲』虽然是当时有名的相声大师,但此刻也没有在现场,而是忙于他自己的相声事业。在郭麒麟5岁那年,他终于能和父亲『郭德纲』团聚了。 终于,2019年,郭麒麟主演的话剧牛天赐得到了他…

郭麒麟:为梦想减重70斤,克服困难,成就了风生水起的生活(郭麒麟的梦想)

『林俊杰』的瓜?艺人的年薪?歌手音乐合伙人?讲讲天行健?(扒一扒『林俊杰』)

『林俊杰』:干净形象背后的低调情感歌手『林俊杰』以其独特音色和温文尔雅闻名于世,但在感情世界里却显得异常保守与低调。尽管在比赛中名列并非靠前,但他特色鲜明的音乐风格赢得了观众与业内好评,并在赛后带来了更多关注以及参…

『林俊杰』的瓜?艺人的年薪?歌手音乐合伙人?讲讲天行健?(扒一扒『林俊杰』)

语音转ppt哪个好?5款工具对比,2025首选这款最专业(语音转文档的软件)

比如智能降噪,上次在会议室录的音有空调声,它居然把杂音滤得干干净净,连同事小声说的“这个方案要加数据”都准确识别了;发言人识别更绝,多人会议时,它能通过声纹区分谁在说,比如老板的话标“王总”,运营岗的小张标…

语音转ppt哪个好?5款工具对比,2025首选这款最专业(语音转文档的软件)

美国施压后 日本暂不承认巴勒斯坦国 考虑外交平衡(美国对日本的压制)

据日本共同社和《朝日新闻》报道,多名日本政府相关人士透露,日本政府已基本决定暂不承认巴勒斯坦国。日本政府将在联合国大会期间就是否承认巴勒斯坦国表达立场

美国施压后 日本暂不承认巴勒斯坦国 考虑外交平衡(美国对日本的压制)