2011-12-16 20 views
6

siempre pensé que sólo podía comprobar una var indefinido comparándolo con indefinido, pero este es el error que consigo en la consola de cromo:¿Cómo comprobar si una variable u objeto no está definido?

enter image description here

Cómo ¿Cómo verifico para el objeto jQuery siendo indefinido ?

EDIT:

enter image description here

si (jQuery) me está dando problemas también

EDIT:

solución:

if(window.jQuery) obras. typeof(jQuery) == 'undefined' funciona también.

¿Alguien podría explicar por qué?

+0

[http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object-is-undefined/8531076#8531076][1] [1]: http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object-is-undefined/8531076#8531076 –

+0

http: // stackoverflow.com/questions/27509/detecting-un-undefined-object-property-in-javascript, http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object- es-undefined –

Respuesta

9

hay varias soluciones:

  1. Uso typeof. Es un operador especial y nunca dará como resultado un ReferenceError. Se evalúa como "indefinido" para, bueno, el valor undefinedo para una variable que no existe en el contexto. No soy fanático de eso, pero parece muy común.

  2. Use window.jQuery. Esto fuerza una "búsqueda de propiedades": las búsquedas de propiedades nunca fallan, y devuelve undefined si dicha propiedad no existe. Lo he visto usado en algunos marcos. Tiene la desventaja de asumir un contexto (generalmente window).

  3. Asegúrate de que la variable esté "declarada": var jQuery; if (jQuery) { /* yay */ }. No parece muy común, pero es completamente válido. Tenga en cuenta que var es solo una anotación y se iza. En el contexto global, esto creará la propiedad "jQuery".

  4. Coja el ReferenceError. Honestamente, nunca he visto esto ni lo recomiendo, pero funcionaría.

Happy coding.

2

Por lo que sabe que puede hacer

if(typeof X == 'undefined') 

Pero hay recursos cargador es posible que desee echar un vistazo a. Y la respuesta dada ante mí también es correcta.

-1

if(jQuery) debería ser suficiente, ¿no?

+0

No. Podría lanzar un ReferenceError (lo que está arriba en la publicación). –

3

De here

if(typeof jQuery == "undefined") { 
    document.write("undefined"); 
}else{ 
    document.write("Exists"); 
} 
+0

Aunque esto "hace trampas" con 'var test = 1' ya que el contexto no es el mismo :) Aún así sería válido para esta situación sin él. –

+0

Corregido. Gracias. –

5

Proceso 1:

if (jQuery) { 
    // jQuery is loaded 
} else { 
    // jQuery is not loaded 
} 

Proceso 2:

if (typeof jQuery == 'undefined') { 
    // jQuery is not loaded 
} else { 
    // jQuery is loaded 
} 
+1

No, esto puede lanzar un ReferenceError, como se muestra en la publicación. –

+0

El proceso n. ° 2 es seguro/correcto aquí. Muchas veces veo '===' usado exclusivamente con 'typeof', pero parece válido. –

1

La variable llamada "jQuery" en el código no ha sido declarado , por lo que lanzará un error como "xxx (nombre de la variable) no está definido".

Usted puede utilizar el operador typeof para comprobar es una variable no está definida o no

if (typeof(jQuery) == "undefined") 
Cuestiones relacionadas