只是想知道这个:
区别之间,或者之间存在差异:
delete obj.someProperty
和
obj.someProperty=undefined
答案 0 :(得分:5)
第二个版本将属性设置为现有值undefined
,而第一个版本从对象中删除键。迭代对象或使用in
关键字时,可以看到差异。
var obj = {prop: 1};
'prop' in obj; // true
obj.prop = undefined;
'prop' in obj; // true, it's there with the value of undefined
delete obj.prop;
'prop' in obj; // false
答案 1 :(得分:3)
迭代对象时将实现差异。删除属性时,它不会包含在循环中,而只是将值更改为undefined将包含它。对象的长度或迭代次数将不同。
以下是有关JavaScript中删除的一些很好的(尽管是高级的)信息:
答案 2 :(得分:2)
使用delete
实际上会从对象中删除密钥本身。如果将值设置为undefined
,则它们仍然存在,但该值是唯一已更改的值。
答案 3 :(得分:2)
前者实际上会删除该属性,后者会将其保留,但会将其设置为undefined
。
如果您遍历所有属性(for (props in obj) { }
)或测试是否存在一个(if ('someProperty' in obj) {}
)