2011-12-15 16 views
9

Quiero mi código para que, si existe una var específica, realice una acción; de lo contrario, se ignorará y se moverá. El problema con mi código es que, si la var específica no existe, causa un error, presumiblemente ignorando el resto del código de JavaScript.JavaScript si var existe

Ejemplo

var YouTube=EpicKris; 

if ((typeof YouTube) != 'undefined' && YouTube != null) { 
    document.write('YouTube:' + YouTube); 
}; 
+0

posible duplicado de [Detección de una propiedad de un objeto indefinido en JavaScript] (http://stackoverflow.com/questions/27509/detecting-un-undefined-object-property-in-java secuencia de comandos) –

Respuesta

3

Código:

var YouTube=EpicKris; 

if (typeof YouTube!='undefined') { 
    document.write('YouTube:' + YouTube); 
}; 

elaborado el mejor método para esto, use typeof para verificar si existe la var. Esto funcionó perfectamente para mí.

7
try { 
    if(YouTube) { 
    console.log("exist!"); 
    } 
} catch(e) {} 
console.log("move one"); 

funcionaría cuando YouTube no es nulo, indefinido, 0 o "".

¿Eso funciona para usted?

+0

Entonces, si var YouTube = EpicKris; no existió o si var YouTube = null; o YouTube = 0; Entonces, ¿no deberían producirse errores y debería ejecutarse el resto del código JavaScript? –

+0

Ups, ignora mi respuesta, tiene errores, ¡Gurung es mejor! – Chango

+0

Bueno, lo arreglé con la respuesta de gurung. Ahora ejecutará el código mientras YouTube exista y no sea nulo, 0 o una cadena vacía. ¿Esta respuesta funciona para ti? – Chango

6

Este es un clásico.

Utilice el calificador "ventana" para las comprobaciones entre exploradores en variables indefinidas y no se romperá.

if (window.YouTube) { // won't puke 
    // do your code 
} 

o para el núcleo duro muy rigurosos desde el gallinero ...

if (this.YouTube) { 
    // you have to assume you are in the global context though 
} 
+3

Eso no funcionará si se encuentra en un ámbito diferente. No recomiendo hacer eso. – regality

+0

Sí, debería haber mencionado también, hacer cualquier calificador de objeto como raíz decir que tiene un objeto "algo = {}" y luego verificar si "algo.x" no vomitará tampoco. Tuve que hacer esto al escribir complementos de boostrapping como window.myThing = window.myThing || {}; etcétera etcétera.IE es la verdadera razón para esto ya que IE está retrasado, incluso en v9. –

+0

Entonces, si var YouTube = EpicKris; no existía, entonces no debería haber errores y debería ejecutarse el resto del código JavaScript? –

1

Qué acerca del uso try/catch:

try { 
    //do stuff 
} catch(e) { /* ignore */ } 
+0

¿Podría explicarme esto? –

+0

@KristianMatthews: Vea esto: http://jsfiddle.net/BGurung/deRvV/3/ –

+0

Este enfoque funciona en todas partes, pero es el equivalente a decir "No sé cómo funciona esto, así que pondré un poco de código allí ". Esto se debe hacer cuando sabe que algo puede fallar según el usuario o la red o algo fuera de su control en la mayoría de los casos. Normalmente no son cosas que entiendas por qué se rompen y están bajo tu control. –

0

Creo que esto es lo que puede estar buscando:

if (typeof(YouTube)!=='undefined'){ 
    if (YouTube!==undefined && YouTube!==null) { 
     //do something if variable exists AND is set 
    } 
} 
0

es fácil ... se puede hacer en 2 formas

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(YouTube) { //if is null or undefined (Zero and Empty String too), will be converted to false 

    console.log(YouTube);// exists 

}else{ 

    consol.log(YouTube);// null, undefined, 0, "" or false 

} 

o puede ser

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(typeof YouTube == "undefined" || YouTube == null) { //complete test 

    console.log(YouTube);//exists 

}else{ 

    console.log(YouTube);//not exists 

} 
Cuestiones relacionadas