Saltar al contenido

Cómo declarar una variable global en JavaScript

Si encuentras algún fallo en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.

Solución:

Si tiene que generar variables globales en el código de producción (que debe evitarse) siempre declararlos explícitamente:

window.globalVar = "This is global!";

Si bien es posible definir una variable global simplemente omitiendo var (suponiendo que no haya una variable local con el mismo nombre), al hacerlo se genera un implícito global, lo cual es una mala acción y generaría un error en Modo estricto.

Si esta es la única aplicación en la que va a utilizar esta variable, el enfoque de Felix es excelente. Sin embargo, si está escribiendo un complemento jQuery, considere las variables y funciones de “espacio de nombres” (detalles sobre las comillas más adelante…) necesarias en el objeto jQuery. Por ejemplo, actualmente estoy trabajando en un menú emergente jQuery que he llamado miniMenu. Por lo tanto, he definido un “espacio de nombres” miniMenu bajo jQuery, y coloco todo ahí.

La razón por la que uso comillas cuando hablo de los espacios de nombres de JavaScript es que en realidad no son espacios de nombres en el sentido normal. En cambio, solo uso un objeto JavaScript y coloco todas mis funciones y variables como propiedades de este objeto.

Además, por conveniencia, suelo subespaciar el espacio de nombres del complemento con un i espacio de nombres para cosas que solo deben usarse internamente dentro del complemento, para ocultarlo de los usuarios del complemento.

Así es como funciona:

// An object to define utility functions and global variables on:
$.miniMenu = new Object();
// An object to define internal stuff for the plugin:
$.miniMenu.i = new Object();

Ahora solo puedo hacer $.miniMenu.i.globalVar = 3 o $.miniMenu.i.parseSomeStuff = function(...) ... cada vez que necesito guardar algo globalmente, y todavía lo mantengo fuera del espacio de nombres global.

Nota: la pregunta es sobre JavaScript y esta respuesta es sobre jQuery, lo cual es incorrecto. Esta es una respuesta antigua, de los tiempos en que jQuery estaba muy extendido.

En su lugar, recomiendo comprender los alcances y los cierres en JavaScript.

Vieja, mala respuesta

Con jQuery puedes hacer esto, sin importar dónde esté la declaración:

$my_global_var = 'my value';

Y estará disponible en todas partes.

Lo uso para hacer galerías de imágenes rápidas, cuando las imágenes se distribuyen en diferentes lugares, así:

$gallery = $('img');
$current = 0;

$gallery.each(function(i,v)
    // preload images
    (new Image()).src = v;
);
$('div').eq(0).append('  ');
$('.next').click(function()
    $current = ( $current == $gallery.length - 1 ) ? 0 : $current + 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
);
$('.prev').click(function()
    $current = ( $current == 0 ) ? $gallery.length - 1 : $current - 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
);

Propina: ejecute todo este código en la consola en esta página 😉

Te mostramos comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *