关于js闭包的一些浅层面的理解

本文介绍了JavaScript中闭包的基本概念,包括如何通过闭包保护变量、实现数据隐藏以及避免垃圾回收等问题。此外还讨论了闭包可能导致的内存泄漏风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function a() { 
 var i = 0; 
 function b() { alert(++i); } 
 return b;
}
var c = a();
c();

1.js分全局作用域和函数作用域。函数作用域里可以访问到全局,通过一个叫作用域链的东西。但全局怎么访问函数呢?就有人想了在函数里面再写一个函数(闭包),然后在全局引用这个内部函数,全局不就能看到函数里的东西了吗!

 

2.在javascript中如果一个对象不再被引用,那么它就会被GC回收,闭包防止资源被GC回收也就是这个原理。上面代码每次执行c(),i都会累加1并弹出,因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。

 

3.闭包可以用来模拟类似于java中private修饰符的作用。上面代码中i只能通过a()中的b()来读取,这就保证了数据i的安全性。

 

4.滥用闭包会导致占用过多内存,原因如上面第2点所述。

 

5.闭包具体内部原理是真的恶心!!

转载于:https://www.cnblogs.com/yonglin/p/6255838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值