2016-04-11 43 views
3

因此,我已經閱讀了一些SO帖子和一些博客,但仍然無法弄清楚爲什麼我的代碼無法正常工作。檢查是否定義了JavaScript對象/屬性

我的代碼:

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

UPDATE:

好,謝謝大家的投入,我道歉,如果這個問題令人困惑。我實際上正在尋找d.parent.parent,但試圖通過使用d.parent來簡化問題。我認爲問題在於d.parent未定義,所以它甚至沒有達到d.parent.parent。對不起,更具體!

+0

@ ForceMagic我收到相同的錯誤。 – As3adTintin

+1

'typeof Object ==='undefined''是一種有效的方式來使用typeof – NickSlash

+0

@NickSlash sry,我的不好:) – ForceMagic

回答

5

如果你想要一個未定義的安全檢查一路下來你的對象樹,你可以使用:

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

} 

如果您在您的處置有Lodash的奢侈品:

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

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

} 
+0

開頭有意思,謝謝@jellyraptor – As3adTintin

2
if(typeof x === 'undefined') 

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

+0

感謝您的輸入,但是我仍然收到相同的錯誤 – As3adTintin

+0

您確定您正在引用現有值嗎? – ForceMagic

+1

Ya @As3adTintin,如果由於某種原因d.parent本身是未定義的,那麼在它檢查d.parent.name之前腳本將會出錯,請注意 – labago

4

嘗試檢查所有患兒邏輯OR

if (typeof d == "undefined" || 
    typeof d.parent == "undefined" || 
    typeof d.parent.name == "undefined") { 
// ... 
} 
+0

Gah我得到了同樣的錯誤......我一定是在做錯事。謝謝你的建議! – As3adTintin

+1

追加'typeof d ==「undefined」||'如果條件 – ForceMagic

0

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

相關問題