前端JavaScript面试重难点: 闭包+内存泄漏+垃圾回收机制

前置知识!!!
闭包 是Javascript语言的一个重难点, 也是它的特色, 很多高级应用都要依靠闭包来实现。在各种专业文献上学习"闭包"的时候, 就一个感觉 – “抽象” !

特别是学习内存泄漏的时候, 没想明白为什么使用闭包的时候 不及时清除函数中的元素会导致内存泄漏, 直到我的第一次面试结束之后, 回顾的时候把这几个知识串联了起来, 一切都明朗了。

这里先给大家看个 解除闭包的引用, 释放数据内存 的例子(看不懂没关系, 后面才是正文开始)

function createClosure() {
     
    let externalData = {
    /* 一些数据 */ };  
  
    return function innerFunction() {
     
        // 使用externalData做一些事情  
    };  
}  
  
let myClosure = createClosure();  
// ... 使用myClosure做一些事情  
  
// 当你不再需要myClosure时  
myClosure = null; // 移除对闭包的引用  
  
// 注意:如果externalData仍然被其他闭包或外部代码引用,则它不会被回收  
// 你需要确保没有其他引用指向它,或者它本身也应该被设置为null

这里还要补充一点 垃圾回收机制 的知识, 方便后续理解:

前端中的垃圾回收机制(Garbage Collection, 简称GC)是一种 自动内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值