variable tipos llamar globales ejemplos javascript jquery variables

javascript - tipos - var jquery



JQuery/Javascript: compruebe si existe var (6)

Antes de cada una de sus declaraciones condicionales, podría hacer algo como esto:

var pagetype = pagetype || false; if (pagetype === ''something'') { //do stuff }

Posible duplicado:
¿Cómo puedo verificar si una variable está definida en JavaScript?
¿Existe una función estándar para verificar las variables nulas, indefinidas o en blanco en JavaScript?

Tengo un script que ocurre en dos partes.

La primera parte configura una var:

var pagetype = "textpage";

La segunda parte es una simple declaración if:

if(pagetype == "textpage") { //do something };

Ahora la segunda parte, la declaración if, aparece en todas las páginas de mi sitio. Pero la primera parte, donde se declara la var, solo aparece en algunas de mis páginas.

En las páginas sin var, naturalmente obtengo este error:

Uncaught ReferenceError: pagetype is not defined

Entonces mi pregunta es: ¿hay alguna manera con JavaScript o JQ para detectar si existe una var (no solo si tiene datos asignados)?

Me estoy imaginando que usaría otra declaración, por ejemplo:

if ("a var called pagetypes exists")....


Es imposible determinar si una variable ha sido declarada o no, salvo usar try..catch para causar un error si no se ha declarado. Prueba como:

if (typeof varName == ''undefined'')

no le diga si varName es una variable en el alcance, solo que las pruebas con typeof no están definidas. p.ej

var foo; typeof foo == ''undefined''; // true typeof bar == ''undefined''; // true

En lo anterior, no se puede decir que foo fue declarado pero que el bar no lo fue. Puede probar las variables globales usando in :

var global = this; ... ''bar'' in global; // false

Pero el objeto global es el único objeto variable * al que puede acceder, no puede acceder al objeto variable de ningún otro contexto de ejecución.

La solución es declarar siempre las variables en un contexto apropiado.

  • El objeto global no es realmente un objeto variable, solo tiene propiedades que coinciden con las variables globales y proporciona acceso a ellas, por lo que solo parece ser una.

Para probar la existencia, hay dos métodos.

a. "property" in object

Este método verifica la cadena prototipo para la existencia de la propiedad.

segundo. object.hasOwnProperty( "property" )

Este método no sube la cadena de prototipos para verificar la existencia de la propiedad, debe existir en el objeto al que llama el método.

var x; // variable declared in global scope and now exists "x" in window; // true window.hasOwnProperty( "x" ); //true

Si estuviéramos probando usando la siguiente expresión, devolvería falso

typeof x !== ''undefined''; // false


Para su caso, y el 99.9% de las respuestas de otros elclanrs es correcto.

Pero como undefined es un valor válido, si alguien fuera a probar una variable no inicializada

var pagetype; //== undefined if (typeof pagetype === ''undefined'') //true

la única forma 100% confiable de determinar si existe una var es capturar la excepción;

var exists = false; try { pagetype; exists = true;} catch(e) {} if (exists && ...) {}

Pero nunca lo escribiría de esta manera


Puedes usar typeof :

if (typeof pagetype === ''undefined'') { // pagetype doesn''t exist }


Sospecho que hay muchas respuestas como esta en SO, pero aquí tienes:

if ( typeof pagetype !== ''undefined'' && pagetype == ''textpage'' ) { ... }