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
}
undefined
non è una parola chiave JavaScript (anche se tutti sembrano pensare che lo sia). Se lo desideri, puoi creare una variabile chiamata undefined
e 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.
undefined
doveva 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 typeof
restituisce 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' typeof
operatore 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 undefined
variabile preesistente in JavaScript - non è una sorta di parola chiave magica con cui puoi confrontare le cose. Puoi effettivamente creare una variabile chiamata undefined
e 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: