2016-04-11 33 views
3

Bu yüzden bir kaç SO gönderisini ve bazı blogları okudum, ancak kodumun neden çalışmadığını anlayamıyorum.javascript object/property tanımlanmış olup olmadığını kontrol edin

Kodum:

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

d gibi görünür bir nesnedir:

Ben (!d.parent.name), hasOwnProperty, === ve typeof kullanarak yukarıdaki gibi kullanılarak denedim
Object { 
children: Object, 
count: 676 
} 

. Baska öneri?

ben alma hatadır TypeError: d.parent.name is undefined

GÜNCELLEME: girişi için

Tamam teşekkürler herkese ve özürlerimi soru kafa karıştırıcı eğer. Ben aslında d.parent.parent'u arıyordum ama d.parent kullanarak soruyu basitleştirmeye çalıştım. Sorun şu ki, d.parent'un tanımlanmadığı için d.parent.parent'a bile ulaşmıyor. Daha spesifik olmamak için üzgünüm!

+0

@ ForceMagic Ben aynı hatayı alıyorum. – As3adTintin

+1

'typeof Nesne === 'undefined' 'geçerli bir yoldur. – NickSlash

+0

@NickSlash sry, benim kötü :) – ForceMagic

cevap

5

, şunları kullanabilirsiniz:

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

} 

emrinde Lodash sahip lüks varsa:

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

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

} 
+0

ilginç, teşekkürler jellyraptor – As3adTintin

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

Bunu kullanarak, ne tür bir değer, yanı sıra için gerekli olanı denetler.

+0

Girdi için teşekkürler, ancak yine de aynı hatayı aldım – As3adTintin

+0

Varolan bir değere başvurduğunuzdan emin misiniz? – ForceMagic

+1

Ya @ As3adTintin, bir nedenle d.parent kendisi undefined, betik bile d.parent.name kontrol etmek için alır önce hata olacak, bu – labago

4

hata mülkiyet tanımlayıcı parent olduğuna inanıyoruz mantıksal OR

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

Gah Aynı hatayı alıyorum ... Gerçekten yanlış bir şey yapmalıyım. Öneriler için teşekkürler! – As3adTintin

+1

Ekle "typeof d ==" undefined "||' nin başlangıcına – ForceMagic

0

ile tüm çocukları kontrol etmek deneyin. Nesnenin mülkiyeti olduğundan emin misin? d tanıtıcısı geçersiz olabilir, çünkü parent mevcut değil. Eğer tüm yolu nesne ağacının aşağı tanımlanmamış güvenli çek istiyorsanız