js的垃圾回收(待续)

97 阅读1分钟

普通变量回收

let a = 1;
a = null;

可以被回收

  • 不被引用的(引用技术为0)
  • 无法被访问到的
function a() {
    const b = "233";
    return `${b}---ccc`
}
a();
// 反例
function a1() {
    b = "233"; // 此处不被回收,因为挂载到window对象上了
    return `${b}---ccc`
}
a1();

不能被回收

  • 引用计数不为0
  • 循环引用
function a() {
    const obj1 = {};
    const obj2 = {};
    obj1.name = obj2;
    obj2.name = obj1;
}
a();