2011-08-12 17 views
194

Estoy comprobando if(response[0].title !== undefined), pero me sale el error:prueba si algo no está definido en JavaScript

Uncaught TypeError: Cannot read property 'title' of undefined.

+0

Consulte la respuesta aquí en stackoverflow. http://stackoverflow.com/questions/858181/how-to-check-a-not-defined-variable-in-javascript –

+0

posible duplicado de [Javascript: undefined! == undefined?] (Http: // stackoverflow.com/questions/776950/javascript-undefined-undefined) –

Respuesta

301

response[0] no está definido, verifique si está definido y luego verifique su título de propiedad.

if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){ 
    //Do something 
} 
+12

A pesar del número de votos, esta no es una buena forma de realizar el control porque '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')'. – BadHorsie

+3

@BadHorsie tiene sentido, actualicé la respuesta con su comentario. – amosrivera

0

Comprobar si eres response[0] realidad existe, el error parece sugerir que no lo hace.

1

Será porque response[0] en sí no está definido.

0

Usted debe comprobar primero si response[0] no está definido, y sólo si no lo es, y comprueba para el resto. Eso significa que en su caso, response[0] no está definido.

28

Sólo comprobar si response[0] no está definida:

if(response[0] !== undefined) { ... } 

Si usted todavía tiene que comprobar explícitamente el título, hágalo después de la comprobación inicial:

if(response[0] !== undefined && response[0].title !== undefined){ ... } 
11

En realidad, usted debe rodearlo de un intento/Catch Block para que su código no deje de funcionar. De esta manera:

try{ 
    if(typeof response[0].title !== 'undefined') { 
     doSomething(); 
    } 
    }catch(e){ 
    console.log('responde[0].title is undefined'); 
    } 
+0

Estaba buscando IE 8 y necesitaba intentar capturar. – RonanOD

+1

esta es la mejor manera si está probando si una función no está definida – edepperson

+0

arrojar un error al verificar indefinido no es una buena solución. @amosrivera es la mejor solución. – user3658423

30

tuve problemas con todos los demás ejemplos de código anteriores. En Chrome, esta era la condición que trabajó para mí:

typeof possiblyUndefinedVariable !== "undefined" 

que tendrá que probar que en otros navegadores y ver cómo van las cosas, supongo.

+2

Lo mismo - Encontré que 'undefined' tenía que ser una cadena. – remarsh

+0

esto debe ser algo nuevo con Chrome (estoy en Win Chrome 41 atm). ¡la respuesta aceptada solía funcionar bien! : P – joe

8

typeof:

var foo; 
if (typeof foo == "undefined"){ 
    //do stuff 
} 
1

Comprobar si condition == null; Resolverá el problema

+1

Esto debería ser un comentario –

0

Sé que fui aquí 7 meses tarde, pero encontré esta pregunta y parece interesante. Intenté esto en la consola de mi navegador.

try{x,true}catch(e){false} 

Si la variable x no está definido, el error es apresado y será falsa, si no, se volverá realidad. 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}')