JavaScript 变量赋值:三元运算符 VS object.property ||价值

JavaScript variable assignment: ternary operator VS object.property || value

以下变量赋值在性能和可靠性方面有何不同:

var obj = {name: "Antonia"};

var foo = obj.name ? obj.name : "foo";
var baz = obj.name || "baz";

由于定义了obj.name,因此foobaz都将包含"Antonia".

据我所知,除了 null、undefined、0 和 false 之外,代码对于 obj.name 值的行为应该相同。如果 属性 设置为这些值之一,foo 将包含 "foo" 并且 baz 被分配 "baz".

我是否遗漏了某种缺点? 您推荐使用哪一种?

谢谢!

PS: fiddle 玩 https://jsfiddle.net/a2rgvhzm/

尽管你给出的例子笨拙地实现了同样的事情。所以是的,在这种情况下它们是等价的。

var foo = obj.name ? obj.name : "foo";

这很尴尬,因为你问的是你是否有 object.name,通常回答是 true/false。在这里,您要用成员本身或随机字符串来回答问题。所以 question/answer 不一致。

var baz = obj.name || "baz"; 我已经看到它在生产中得到更广泛的使用,它更具声明性。而不是问你说的问题,"Assign baz with the object name, oh, and in case it doesn't exist then assign baz with the string "baz",我们知道肯定存在。"

您可能想要分析其中的每一个以回答您关于性能的问题。我希望这能澄清您关于最佳实践的问题。