以下变量赋值的性能和可靠性有何不同:
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/
答案 0 :(得分:1)
你给出的例子虽然笨拙地实现了同样的目的。所以是的,在这种情况下它们是等同的。
var foo = obj.name ? obj.name : "foo";
这很尴尬,因为你问的是你是否有object.name
通常用true / false回答。在这里,您将使用成员本身或随机字符串回答问题。所以问题/答案并不一致。
var baz = obj.name || "baz";
我已经看到这在生产中被广泛使用,这更具说明性。不要问你说的问题,“给baz
分配对象名称哦,如果它不存在,那么为baz
分配字符串”baz“,我们知道存在当然。“
您可能希望对每个问题进行分析,以回答有关性能的问题。我希望这能澄清您关于最佳实践的问题。