Ich überprüfe if(response[0].title !== undefined)
, aber ich erhalte den Fehler:
Nicht erfasster TypeError: Die Eigenschaft 'title' von undefined kann nicht gelesen werden.
Ich überprüfe if(response[0].title !== undefined)
, aber ich erhalte den Fehler:
Nicht erfasster TypeError: Die Eigenschaft 'title' von undefined kann nicht gelesen werden.
Antworten:
response[0]
ist nicht definiert, prüfen Sie, ob es definiert ist, und überprüfen Sie dann den Eigenschaftstitel.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
es sich nicht um ein JavaScript-Schlüsselwort handelt (obwohl jeder zu glauben scheint, dass dies der Fall ist). Wenn Sie möchten, können Sie eine Variable mit dem Namen erstellen. undefined
Diese Prüfung ist dann falsch. Der einzig richtige Weg ist zu überprüfen (typeof myVar !== 'undefined')
.
undefined
?
Überprüfen Sie einfach, ob response[0]
undefiniert ist:
if(response[0] !== undefined) { ... }
Wenn Sie den Titel noch explizit überprüfen müssen, tun Sie dies nach der ersten Überprüfung:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Ich hatte Probleme mit allen anderen Codebeispielen oben. In Chrome war dies die Bedingung, die für mich funktioniert hat:
typeof possiblyUndefinedVariable !== "undefined"
Ich muss das in anderen Browsern testen und sehen, wie es wohl läuft.
undefined
, dass es eine Schnur sein musste.
Eigentlich müssen Sie es mit einem Try / Catch-Block umgeben, damit Ihr Code nicht aufhört zu funktionieren. So was:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
Art der:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Es wird sein, weil response[0]
selbst undefiniert ist.
Überprüfen Sie, ob condition == null
; Es wird das Problem lösen
Sie müssen zuerst prüfen, ob response[0]
undefiniert ist, und nur wenn dies nicht der Fall ist, den Rest prüfen. Das bedeutet, dass in Ihrem Fall response[0]
undefiniert ist.
Ich weiß, dass ich 7 Monate zu spät hierher gekommen bin, aber ich habe diese Fragen gefunden und sie sehen interessant aus. Ich habe dies auf meiner Browserkonsole versucht.
try{x,true}catch(e){false}
Wenn die Variable x undefiniert ist, wird ein Fehler abgefangen und ist falsch. Wenn nicht, wird true zurückgegeben. Sie können also die eval-Funktion verwenden, um den Wert auf eine Variable festzulegen
var isxdefined = eval('try{x,true}catch(e){false}')
In einigen dieser Antworten gibt es ein grundlegendes Missverständnis hinsichtlich der Verwendung typeof
.
Falsch
if (typeof myVar === undefined) {
Richtig
if (typeof myVar === 'undefined') {
Der Grund ist, dass typeof
eine Zeichenfolge zurückgegeben wird. Daher sollten Sie überprüfen, ob die Zeichenfolge "undefiniert" zurückgegeben wurde und nicht undefined
(nicht in Anführungszeichen eingeschlossen), die selbst einer der primitiven Typen von JavaScript ist . Der typeof
Operator gibt niemals einen Wert vom Typ zurück undefined
.
Nachtrag
Ihr Code funktioniert möglicherweise technisch, wenn Sie den falschen Vergleich verwenden, aber wahrscheinlich nicht aus dem Grund, den Sie denken. undefined
In JavaScript gibt es keine bereits vorhandene Variable - es ist kein magisches Schlüsselwort, mit dem Sie Dinge vergleichen können. Sie können tatsächlich eine Variable mit dem Namen erstellen undefined
und einen beliebigen Wert angeben.
let undefined = 42;
Und hier ist ein Beispiel, wie Sie damit beweisen können, dass die erste Methode falsch ist: