我已经读过此In Javascript, how to conditionally add a member to an object?,但就我而言,它不起作用。
我有以下情况:
angular.forEach(vm.someData.entities, entity => {
...(entity.type === "section" && { entity.styleFormats = entity[`${vm.activeTab}StyleFormats`]});
entity.content = entity[`${vm.activeTab}Content`];
entity.stateClasses = determinateStateClasses(false);
entity.isNew = false;
});
spread运算符给我一个解析错误。
答案 0 :(得分:0)
不要在此处使用传播运算符。在构造对象文字时会使用该运算符,这不是您在此处所做的。您只是在函数中编写一行代码。
您 也许可以使用&&
短路来执行预期的操作:
entity.type === "section" && entity.styleFormats = entity[`${vm.activeTab}StyleFormats`];
但这还不清楚。通常,在确定值时会使用这种短路,而不是在执行操作时使用。从结构上看,这类似于使用条件运算符(?:
)与使用if
块之间的区别。前者不能替代后者,它们有自己的用途。
在这种情况下,您要做的是有条件地在函数中执行操作。这正是if
块的确切含义:
if (entity.type === "section") {
entity.styleFormats = entity[`${vm.activeTab}StyleFormats`];
}
基本上,不要尝试编写最聪明的代码,而要编写最清晰的代码。没有理由避免使用if
块。