在Javascript中重新分配对象变量时,原始对象会发生什么

When object variable is reassigned in Javascript, what happens to the original object?

本文关键字:对象 变量 原始 什么 Javascript 新分配 分配      更新时间:2023-09-26

让我们在一开始就说:

class AI {
// class properties/methods here
}
var chappie = new AI;

然后在使用变量后,如果我想通过调用来重置它

chappie = new AI;

原始对象会发生什么?它会收集垃圾吗?这是允许的,还是有更好的方法来"重置"变量?

如果不再引用对象,那么该对象最终将被垃圾回收。

如果您最初有1个引用,而现在没有,那么最终内存将被释放。

var obj = { };
var a = obj;
var b = obj;
a = null;

仍然有一个参考,所以没有什么变化。

至于另一个问题:"否则我该如何重置变量?"我的后续问题是"为什么?"

如果您希望GC启动,那么您可以将var设置为nullundefined或其他任何值(假设这是最后一次引用对象)。

否则,当任何东西都不再需要var时,GC也会清理var本身。如果被删除的var是对某个值的最后一次引用,那么该值将被清除。