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

时间:2017-09-11 14:31:39

标签: javascript performance variable-assignment

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

var obj = {name: "Antonia"};

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

由于定义了 obj.name foo baz 都将包含" Antonia"。

据我所知,除了null,undefined,0和false之外, obj.name 值的代码应该是相同的。如果属性设置为其中一个值,则foo将包含" foo"和巴兹分配了#b;"。

我有什么缺点吗? 你建议使用哪一个?

谢谢!

PS:小提琴演奏https://jsfiddle.net/a2rgvhzm/

1 个答案:

答案 0 :(得分:1)

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

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

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

var baz = obj.name || "baz"; 我已经看到这在生产中被广泛使用,这更具说明性。不要问你说的问题,“给baz分配对象名称哦,如果它不存在,那么为baz分配字符串”baz“,我们知道存在当然。“

您可能希望对每个问题进行分析,以回答有关性能的问题。我希望这能澄清您关于最佳实践的问题。