在没有冗余删除语句的两个单独对象中删除 属性

Delete property in two separate objects without redundant delete statements

我正在尝试删除两个不相关对象的属性。有什么办法可以避免这样做吗?

delete a.prop
delete b.prop

我试过了:

delete a.prop && b.prop

delete a.prop,b.prop

但在这两种情况下,b.prop 都完好无损。无论如何要避免这些冗余的删除语句(不为其编写函数)?为什么 && 运算符不起作用?

删除运算符只接受一个属性。您的代码并不多余。

它们并不多余。他们简洁明了,清楚他们在做什么。删除运算符删除单个 属性 - 你想出的任何 "creative" 代码意味着你只需要写一次 delete 最终看起来会更糟,而且比delete.

的6个字符

why doesn't the && operator work?

因为 delete 运算符比 && 有一个 higher precedence,并且采用单个表达式,这意味着:

delete a.prop && b.prop

相同
(delete a.prop) && b.prop

IE 删除先发生,结果是 &&.

的第一个操作数

与使用 , 类似,delete 仅对逗号左侧的表达式进行运算。

每个对象一次删除并不多余:

The delete operator removes a property from an object.

来源:Mozilla MDN,Delete Operator

您还可以逐步了解删除运算符的工作原理ECMAScript , 11.4.1 The delete Operator