Kontrol ediyorum if(response[0].title !== undefined)
, ama hatayı alıyorum:
Yakalanmamış TypeError: undefined öğesinin 'title' özelliği okunamıyor.
Kontrol ediyorum if(response[0].title !== undefined)
, ama hatayı alıyorum:
Yakalanmamış TypeError: undefined öğesinin 'title' özelliği okunamıyor.
Yanıtlar:
response[0]
tanımlı değilse, tanımlı olup olmadığını kontrol edin ve ardından özellik başlığını kontrol edin.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
bir JavaScript anahtar kelimesi olmadığı için (herkes öyle olduğunu düşünüyor olsa da) kontrolü gerçekleştirmek için iyi bir yol değildir. İsterseniz, adlı bir değişken oluşturabilirsiniz undefined
ve bu onay yanlış olur. Tek doğru yol kontrol etmektir (typeof myVar !== 'undefined')
.
undefined
?
response[0]
Tanımsız olup olmadığını kontrol edin :
if(response[0] !== undefined) { ... }
Başlığı hala açıkça kontrol etmeniz gerekiyorsa, bunu ilk kontrolden sonra yapın:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Yukarıdaki diğer kod örnekleri ile sorun yaşadım. Chrome'da benim için çalışan durum buydu:
typeof possiblyUndefinedVariable !== "undefined"
Bunu diğer tarayıcılarda test etmem ve her şeyin nasıl gittiğini görmem gerekecek.
undefined
Bir dize olması gerektiğini buldum .
Aslında kodunuzun çalışmasını durdurmak için bir Try / Catch bloğu ile çevrelemeniz gerekir. Bunun gibi:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
bir çeşit:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Çünkü response[0]
kendisi tanımsızdır.
Önce response[0]
tanımsız olup olmadığını kontrol etmelisiniz ve sadece değilse geri kalanını kontrol etmelisiniz. Bu, sizin durumunuzda response[0]
tanımsız olduğu anlamına gelir .
Buraya 7 ay geç gittiğimi biliyorum, ama bu soruları buldum ve ilginç görünüyor. Bunu tarayıcı konsolumda denedim.
try{x,true}catch(e){false}
X değişkeni tanımsızsa, hata yakalanır ve false olur, eğer değilse, true değerini döndürür. Böylece değeri bir değişkene ayarlamak için eval işlevini kullanabilirsiniz.
var isxdefined = eval('try{x,true}catch(e){false}')
Bu cevapların bazılarında nasıl kullanılacağı hakkında temel bir yanlış anlama vardır typeof
.
Yanlış
if (typeof myVar === undefined) {
Doğru
if (typeof myVar === 'undefined') {
Bunun nedeni typeof
bir dize döndürmesidir. Bu nedenle, bunu yerine "tanımsız" dizesini döndüğünü kontrol edilmelidir undefined
biri kendisidir (tırnak içinde değil), JavaScript'in ilkel türleri . typeof
Operatör türünde bir değer döndürmez asla undefined
.
ek
Yanlış karşılaştırmayı kullanırsanız kodunuz teknik olarak işe yarayabilir, ancak büyük olasılıkla düşündüğünüz nedenle kullanılamaz. undefined
JavaScript'te önceden var olan bir değişken yoktur - bir şeyleri karşılaştırabileceğiniz bir tür sihirli anahtar kelime değildir. Aslında adlı bir değişken oluşturabilir undefined
ve ona istediğiniz herhangi bir değeri verebilirsiniz.
let undefined = 42;
Ve ilk yöntemin yanlış olduğunu kanıtlamak için bunu nasıl kullanabileceğinize bir örnek: