You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将对象属性设为undefined能否删除该属性?含GC及对象展开疑问

问题解答

1. 将对象属性设置为undefined能否删除该属性?

不能。把属性值设为undefined只是清空了属性的值,但属性的键仍然存在于对象的属性列表中。你可以通过'x' in o验证,结果会是true,说明该属性键并未被删除。

2. 执行代码后,o2中是否不存在x属性?

不存在的说法是错误的。对象扩展运算符{ ...o }会复制原对象所有可枚举属性,包括值为undefined的属性。所以执行代码后,o2中仍然存在x属性,其值为undefined,'x' in o2的结果是true。

3. 垃圾回收器(GC)能否删除该属性对应的键?

不会。GC只会回收没有被任何引用指向的内存空间。只要属性键还被对象(o或o2)引用着,就不会被GC回收。如果想要彻底移除属性键,需要使用delete操作符,比如delete o.x,此时属性键会被从对象中移除,后续如果没有其他引用指向它,GC才会回收对应的内存。


内容的提问来源于stack exchange,提问作者psqq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:40:25