Las variables se definen mediante la palabra reservada var, que permite definir una o varias variables simultáneamente:

var variable1 = 16;
var variable2 = "hola", variable3 = "mundo";
var variable4 = 16, variable5 = "hola";

El nombre de las variables debe cumplir las dos siguientes condiciones:

  • El primer carácter debe ser una letra o un guión bajo (_) o un dólar ($).
  • El resto de caracteres pueden ser letras, números, guiones bajos (_) y símbolos de dólar ($).

No es obligatorio inicializar una variable al declararla:

var variable6;

Si la variable no se declara mediante el operador var, automáticamente se crea una variable global con ese identificador y su valor. Ejemplo:

var variable1 = 16;
variable2 = variable1 + 4;

En el ejemplo anterior, la variable2 no ha sido declarada, por lo que al llegar a esa instrucción, JavaScript crea automáticamente una variable global llamada variable2 y le asigna el valor correspondiente.

El ámbito de una variable (llamado scope en inglés) es la zona del programa en la que se define la variable. JavaScript define dos ámbitos para las variables: global y local.

El siguiente ejemplo ilustra el comportamiento de los ámbitos:

function muestraMensaje() {
    var mensaje = "Mensaje de prueba";
}
 
muestraMensaje();
alert(mensaje);

Cuando se ejecuta el código JavaScript anterior, su resultado no es el esperado, ya que no se muestra por pantalla ningún mensaje. La variable mensaje se ha definido dentro de la función y por tanto es una variable local que solamente está definida dentro de la función.

Cualquier instrucción que se encuentre dentro de la función puede hacer uso de la variable. Sin embargo, cualquier instrucción que se encuentre en otras funciones o fuera de cualquier función no tendrá definida la variable mensaje.

Además de variables locales, también existe el concepto de variable global, que está definida en cualquier punto del programa (incluso dentro de cualquier función).

var mensaje = "Mensaje de prueba";
 
function muestraMensaje() {
    alert(mensaje);
}

El código JavaScript anterior define una variable fuera de cualquier función. Este tipo de variables automáticamente se transforman en variables globales y están disponibles en cualquier punto del programa.

De esta forma, aunque en el interior de la función no se ha definido ninguna variable llamada mensaje, la variable global creada anteriormente permite que la instrucción alert() dentro de la función muestre el mensaje correctamente.

Si una variable se declara fuera de cualquier función, automáticamente se transforma en variable global independientemente de si se define utilizando la palabra reservada var o no. Sin embargo, en el interior de una función, las variables declaradas mediante var se consideran locales y el resto se transforman también automáticamente en variables globales.

Por lo tanto, el siguiente ejemplo si que funciona como se espera:

function muestraMensaje() {
    mensaje = "Mensaje de prueba";
}
 
muestraMensaje();
alert(mensaje);

En caso de colisión entre las variables globales y locales, dentro de una función prevalecen las variables locales:

var mensaje = "gana la de fuera";
 
function muestraMensaje() {
    var mensaje = "gana la de dentro";
    alert(mensaje);
}
 
alert(mensaje);
muestraMensaje();
alert(mensaje);

El código anterior muestra por pantalla los siguientes mensajes:

gana la de fuera
gana la de dentro
gana la de fuera

La variable local llamada mensaje dentro de la función tiene más prioridad que la variable global del mismo nombre, pero solamente dentro de la función.

Si no se define la variable dentro de la función con la palabra reservada var, en realidad se está modificando el valor de la variable global:

var mensaje = "gana la de fuera";
 
function muestraMensaje() {
    mensaje = "gana la de dentro";
    alert(mensaje);
}
 
alert(mensaje);
muestraMensaje();
alert(mensaje);

En este caso, los mensajes mostrados son:

gana la de fuera
gana la de dentro
gana la de dentro

La recomendación general es definir como variables locales todas las variables que sean de uso exclusivo para realizar las tareas encargadas a cada función. Las variables globales se utilizan para compartir variables entre funciones de forma rápida.

Como surgió el Teléfono inalámbrico, historia muy interesante El telefóno debe estar sin dudas entre los más importantes inventos de la humanidad, por lo que toda evolución de su concepto inicial ha marcado una t...
Facebook te enseña a decorar tu casa en navidad usando papel La página de Facebook "Bright Side" enseña decorar el hogar usando papeles de colores. Solución económica para ambientar por Navidad. Tan simpl...
Hexagram of the Day : Displays the hexagram of the day from I-ching This class can displays the hexagram of the day from I-ching. It takes the current day and looks up an array with entries for the hexagram picture ...
IBM compra Varicen IBM ha acordado comprar la compañía privada Varicent Software, con sede en Toronto y que cuenta con software de análisis para la gestión del rendimien...
Google va a eliminar los perfiles privados que no se hagan públicos Nueva decisión controvertida de los ejecutivos de Google. Los del portal acaban de anunciar que el día 31 julio le van a dar la puntilla a todos los p...
Send Mail To Specified Email (VQMod) Opencart Module This Mod Requires VQMod To Work This modification allows you to send mail to specified email addresses through the administration panel. This modific...
Facebook ya tiene su telefono inteligente se llama Buffy Los rumores sobre un terminal Facebook vuelven al candelero con una historia que recoge AllThingsDigital en la que asegura que la red social está trab...
Avast! 7 descargalo gratis Aproximadamente un año después de que fuera lanzada la versión 6, llega Avast! 7. Como sabéis, se trata de uno de los antivirus gratuitos más interesa...
Con tan solo 50$ por dispositivo, Aakash causa furor Apenas dos semanas desde el inicio del periodo para comercializar la tablet AaKash, la compañía DataWind ha recibido cerca de 1.5 millones de reservas...
Ranking Lenguajes de Programación Septiembre 2012 Sin un cambio destacado sobre el último ranking, el indice TIOBE vuelve a mostrar la popularidad de Visual Basic .NET, lenguaje de programación orient...