簡體   English   中英

使用管道符號為嵌套對象屬性設置默認值

[英]Set a default value for a nested object property using the pipe symbol

對於給定的哈希:

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

我的問題是如何像處理“普通”哈希那樣定位嵌套的哈希並設置默認值?

JavaScript沒有為此提供特殊語法。 您需要先測試每個可能未定義的值,然后再假設其已定義並嘗試訪問其成員之一。

您仍然可以使用|| &&為此,但在不平凡的情況下,最好使用if

使用||

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

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

使用&&

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM