Sto controllando if(response[0].title !== undefined)
, ma ottengo l'errore:prova se qualcosa non è definito in JavaScript
Uncaught TypeError: Cannot read property 'title' of undefined.
Sto controllando if(response[0].title !== undefined)
, ma ottengo l'errore:prova se qualcosa non è definito in JavaScript
Uncaught TypeError: Cannot read property 'title' of undefined.
response[0]
non è definito, controllare se è definito e quindi controllare il titolo della proprietà.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
Nonostante il numero di voti, questo non è un buon modo per eseguire il controllo perché 'undefined' non è una parola chiave JavaScript (anche se tutti sembrano pensarlo). Se lo desideri, puoi creare una variabile chiamata 'undefined' e quindi questo controllo non sarà corretto. L'unico modo corretto è di controllare '(typeof myVar! == 'undefined')'. – BadHorsie
@BadHorsie ha senso, ho aggiornato la risposta con il tuo commento. – amosrivera
Verificare se siete response[0]
esiste in realtà, l'errore sembra suggerire non è così.
Sarà perché response[0]
non è definito.
È necessario innanzitutto verificare se response[0]
è indefinito, e solo se non lo è, controllare per il resto. Ciò significa che nel tuo caso, response[0]
non è definito.
Basta controllare se response[0]
è indefinito:
if(response[0] !== undefined) { ... }
Se hai ancora bisogno di controllare in modo esplicito il titolo, farlo dopo il controllo iniziale:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
In realtà è necessario circondarla con una Prova/Blocca blocco in modo che il tuo codice non smetta di funzionare. Ti piace questa:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
Stavo guardando IE 8 e avevo bisogno di fare un tentativo di cattura. – RonanOD
questo è il modo migliore se si sta verificando se una funzione non è definita. – edepperson
lanciare un errore per verificare undefined non è una buona soluzione. @amosrivera è la soluzione migliore. – user3658423
Ho avuto problemi con tutti gli altri esempi di codice di cui sopra. In Chrome, questa è stata la condizione che ha funzionato per me:
typeof possiblyUndefinedVariable !== "undefined"
dovrò verificare che in altri browser e vedere come vanno le cose suppongo.
typeof:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Controllare se condition == null
; Risolverà il problema
Questo dovrebbe essere un commento –
So che sono andato qui con 7 mesi di ritardo, ma ho trovato queste domande e sembra interessante. Ho provato questo sulla mia console del browser.
try{x,true}catch(e){false}
Se la variabile x non è definito, l'errore viene catturato e sarà falso, in caso contrario, restituirà true. Quindi puoi utilizzare la funzione eval per impostare il valore su una variabile
var isxdefined = eval('try{x,true}catch(e){false}')
Vedere la risposta qui in StackOverflow. http://stackoverflow.com/questions/858181/how-to-check-a-not-defined-variable-in-javascript –
possibile duplicato di [Javascript: undefined! == undefined?] (Http: // stackoverflow.com/questions/776950/javascript-undefined-undefined) –