簡體   English   中英

檢查是否定義了javascript對象/屬性

[英]Check if javascript object/property is defined

所以我已經閱讀了一些SO帖子和一些博客,但仍然無法弄清楚為什么我的代碼不起作用。

我的代碼:

function myFunct(d) {
    if (typeof d.parent.name == "undefined") {
        console.log("undefined") ;} else { console.log("defined") ;}
    }

d是一個看起來像這樣的對象:

Object { 
children: Object, 
count: 676
}

我嘗試過使用(!d.parent.name)hasOwnProperty=== ,並使用typeof 有什么建議么?

我收到的錯誤是TypeError: d.parent.name is undefined

更新:

好的,感謝大家的投入,如果問題令人困惑,我道歉。 我實際上是在尋找d.parent.parent但試圖通過使用d.parent簡化問題。 我認為問題是d.parent沒有定義所以它甚至沒有達到d.parent.parent 抱歉沒有更具體!

如果您希望在對象樹中一直進行未定義安全檢查,則可以使用:

if( typeof( ((d || {}).parent || {}).name ) === 'undefined') {

}

如果您有奢侈的Lodash可供您使用:

var d = { 
     parent: {
          name: "Joe"
     }
};

if ( typeof (_.get(d, "parent.name")) === 'undefined' ) {

}

嘗試使用邏輯OR檢查所有孩子

if (typeof d == "undefined" ||
    typeof d.parent == "undefined" ||
    typeof d.parent.name == "undefined") {
// ...
}
if(typeof x === 'undefined')

使用它,它會檢查類型和值,這就是你需要的。

我相信錯誤是屬性標識符parent 你確定你的物品有財產嗎? 標識符d可能無效,因為parent不存在。

暫無
暫無

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

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