使用管道符号为嵌套对象属性设置默认值

时间:2014-03-06 02:22:54

标签: javascript jquery hash nested-attributes

对于给定的哈希:

var hash = {
    a: "one",
    b: { cat: "two" }
};

使用两个管道||允许在未定义的情况下放置备用值:

var number = hash.a || "just a number";  // -> "one"
var number = hash.c || "just a number";  // -> "just a number"

但是,定位嵌套哈希会导致错误:Cannot read property 'value' of undefined

var number = hash.c.dog || "just a number";  // -> Cannot read property 'value' of undefined

我的问题是如何定位嵌套哈希并设置默认值,因为我们正在使用'普通'哈希?

1 个答案:

答案 0 :(得分:1)

JavaScript没有为此提供特殊语法。在假定已定义并尝试访问其中一个成员之前,您需要测试每个可能未定义的值。

您仍然可以使用||&&,但在非平凡的情况下,最好只使用if

使用||

var hash = {
    a: "one",
    b: { cat: "two" }
};

var x = (hash.c || {}).cat 

使用&&

var x = hash && hash.c && hash.c.cat