Sto verificando if(response[0].title !== undefined), ma viene visualizzato l'errore:
Uncaught TypeError: impossibile leggere la proprietà 'title' di undefined.
Sto verificando if(response[0].title !== undefined), ma viene visualizzato l'errore:
Uncaught TypeError: impossibile leggere la proprietà 'title' di undefined.
Risposte:
response[0] non è definito, controlla se è definito e quindi controlla il titolo della sua proprietà.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefinednon è una parola chiave JavaScript (anche se tutti sembrano pensare che lo sia). Se lo desideri, puoi creare una variabile chiamata undefinede quindi questo controllo non sarà corretto. L'unico modo corretto è verificare (typeof myVar !== 'undefined').
undefined?
Controlla se response[0]non è definito:
if(response[0] !== undefined) { ... }
Se hai ancora bisogno di controllare esplicitamente il titolo, fallo dopo il controllo iniziale:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Ho avuto problemi con tutti gli altri esempi di codice sopra. In Chrome, questa era la condizione che ha funzionato per me:
typeof possiblyUndefinedVariable !== "undefined"
Dovrò provarlo in altri browser e vedere come vanno le cose, suppongo.
undefineddoveva essere una stringa.
In realtà è necessario circondarlo con un blocco Try / Catch in modo che il codice non smetta di funzionare. Come questo:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
tipo di:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Sarà perché di per response[0]sé non è definito.
Controlla se condition == null; Risolverà il problema
È innanzitutto necessario verificare se response[0]non è definito e, in caso contrario, verificare il resto. Ciò significa che nel tuo caso response[0]non è definito.
So di essere arrivato qui con 7 mesi di ritardo, ma ho trovato questa domanda e sembra interessante. Ho provato questo sulla mia console del browser.
try{x,true}catch(e){false}
Se la variabile x non è definita, l'errore viene rilevato e sarà falso, altrimenti restituirà vero. Quindi puoi usare la funzione eval per impostare il valore su una variabile
var isxdefined = eval('try{x,true}catch(e){false}')
In alcune di queste risposte c'è un malinteso fondamentale su come usare typeof.
scorretto
if (typeof myVar === undefined) {
Corretta
if (typeof myVar === 'undefined') {
Il motivo è che typeofrestituisce una stringa. Pertanto, dovresti verificare che abbia restituito la stringa "non definita" anziché undefined(non racchiusa tra virgolette), che è esso stesso uno dei tipi primitivi di JavaScript . L' typeofoperatore non restituirà mai un valore di tipo undefined.
appendice
Il tuo codice potrebbe tecnicamente funzionare se usi un confronto errato, ma probabilmente non per il motivo che pensi. Non esiste una undefinedvariabile preesistente in JavaScript - non è una sorta di parola chiave magica con cui puoi confrontare le cose. Puoi effettivamente creare una variabile chiamata undefinede dargli qualsiasi valore che ti piace.
let undefined = 42;
Ed ecco un esempio di come puoi usarlo per dimostrare che il primo metodo non è corretto: