我对 JavaScript 的delete
运算符有点困惑。取下面的一段代码:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
这段代码被执行后,obj
是null
,但foo
仍然引用一个与 完全一样的对象obj
。我猜这个对象与foo
指向的对象相同。
这让我很困惑,因为我预计写入会delete obj
删除obj
指向内存中的对象——而不仅仅是变量obj
。
这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它会从内存中清除?
(顺便说一下,我的测试是在 Safari 4 中完成的。)