2009-06-30 8 views
10

Tengo un código que está envuelto en el bloque try/catch. utilizo typeof para averiguar si se define una variable:Javascript si typeof = 'undefined' en try/catch space

if (typeof (var) == 'string') { 
    //the string is defined 
} 

Sin embargo, el uso de este en un bloque try/catch, salta a la parte de captura en lugar de hacer lo que se suppoed hacer (hacer algo con el cadena si está definida).

¿Cómo puedo verificar si una variable está definida sin activar una excepción?

+1

parece que tiene un problema diferente a la que lo que cree - publicar más código – annakata

+0

Gracias eveyone para responder! Mi var era un elemento de matriz. esta fue la razón. Definí la matriz (como matriz vacía) y ahora funciona. La excepción se disparó porque la matriz no existía. – Nir

+0

Un punto: 'typeof' es un operador, no una función. No necesita paréntesis alrededor del operando. * [Esto se migra de mi respuesta ya que no es una respuesta; Creo que no tuve suficientes representantes para publicar un comentario en ese momento] * –

Respuesta

14

'var' no es un nombre de variable válido, es una palabra clave.

Aparte de eso, lo que tiene que ser correcto.

+0

¡Gracias! por favor, consulte mi comentario anterior – Nir

0

me gustaría utilizar una comparación directa sin 'typeof':

var vvv= 2; 
alert(vvv !== undefined); 

tener cuidado, sin embargo, saber si desea comprobar si hay truliness (no falso, nulo, indefinido, "" o 0), contra nulo, indefinido, falso o una combinación de estos.

Si simplemente desea ver que el valor tiene un valor, el código que coloqué arriba debería hacer.

Como sugerencia, he encontrado este libro tremenda: JavaScript - the Good Parts

+0

¡Gracias! por favor vea mi comentario arriba – Nir

+6

var vvv = 2; alerta (vvv! == indefinido); no funciona en todos los casos. En primer lugar, pruébelo sin la primera línea, y obtendrá un error inmediatamente porque vvv no ha sido declarado. En segundo lugar, y esto no es tan importante, lo "indefinido" en el lado derecho de la comparación es una propiedad del objeto global que puede reasignarse y ni siquiera está presente en algunos navegadores (IE 5, por ejemplo) . Entonces, la mejor prueba para una variable v que se define es: if (typeof v! == "undefined") { ... } –