Estoy comprobando if(response[0].title !== undefined)
, pero recibo el error:
TypeError no capturado: no se puede leer la propiedad 'title' de undefined.
Estoy comprobando if(response[0].title !== undefined)
, pero recibo el error:
TypeError no capturado: no se puede leer la propiedad 'title' de undefined.
Respuestas:
response[0]
no está definido, verifique si está definido y luego verifique el título de su propiedad.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
no es una palabra clave de JavaScript (aunque todos parecen pensar que sí). Si lo desea, puede crear una variable llamada undefined
y luego esta verificación será incorrecta. La única forma correcta es verificar (typeof myVar !== 'undefined')
.
undefined
?
Solo verifique si response[0]
no está definido:
if(response[0] !== undefined) { ... }
Si aún necesita verificar explícitamente el título, hágalo después de la verificación inicial:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Tuve problemas con todos los otros ejemplos de código anteriores. En Chrome, esta fue la condición que funcionó para mí:
typeof possiblyUndefinedVariable !== "undefined"
Tendré que probar eso en otros navegadores y ver cómo van las cosas, supongo.
undefined
tenía que ser una cuerda.
En realidad, debe rodearlo con un bloque Try / Catch para que su código no deje de funcionar. Me gusta esto:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
tipo de:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Será porque response[0]
no está definido.
Primero debe verificar si response[0]
está indefinido, y solo si no lo está, verifique el resto. Eso significa que en su caso, response[0]
está indefinido.
Sé que fui aquí con 7 meses de retraso, pero encontré estas preguntas y parece interesante. Intenté esto en la consola de mi navegador.
try{x,true}catch(e){false}
Si la variable x no está definida, se detecta el error y será falso; de lo contrario, se devolverá verdadero. Por lo tanto, puede usar la función eval para establecer el valor en una variable
var isxdefined = eval('try{x,true}catch(e){false}')
En algunas de estas respuestas hay un malentendido fundamental sobre cómo usarlo typeof
.
Incorrecto
if (typeof myVar === undefined) {
Correcto
if (typeof myVar === 'undefined') {
La razón es que typeof
devuelve una cadena. Por lo tanto, debe verificar que haya devuelto la cadena "indefinida" en lugar de undefined
(no entre comillas), que es uno de los tipos primitivos de JavaScript . El typeof
operador nunca devolverá un valor de tipo undefined
.
Apéndice
Su código podría funcionar técnicamente si usa la comparación incorrecta, pero probablemente no por la razón que cree. No hay una undefined
variable preexistente en JavaScript: no es una especie de palabra clave mágica con la que se pueda comparar. En realidad, puede crear una variable llamada undefined
y darle el valor que desee.
let undefined = 42;
Y aquí hay un ejemplo de cómo puede usar esto para demostrar que el primer método es incorrecto: