W3docs

Variables de JavaScript

Artículo de W3Docs sobre variables en JavaScript: declaración, uso de var, let y const, ámbito, hoisting y la Zona Muerta Temporal.

Introducción

Una variable es un contenedor con nombre para un valor. En JavaScript se crean variables para almacenar datos — el nombre de un usuario, un total acumulado, el resultado de un cálculo — y luego se hace referencia a esos datos por su nombre en el resto del programa.

Esta guía cubre todo lo necesario para declarar variables con confianza: las tres palabras clave (let, const y el antiguo var), cómo el ámbito determina dónde es visible una variable, qué significan en la práctica el hoisting y la Zona Muerta Temporal (TDZ), la diferencia entre reasignar y mutar un const, y las reglas de nomenclatura y convenciones que sigue la comunidad.

Versión corta: usa const por defecto, let cuando necesites reasignar, y evita var en código moderno.

Declarar una Variable

Se declara una variable con una palabra clave seguida de un nombre y, opcionalmente, se le asigna un valor con =:

javascript— editable

JavaScript es de tipado dinámico: una variable no tiene un tipo fijo, por lo que la misma variable puede contener un string ahora y un número después. (Consulta Tipos de datos de JavaScript para conocer los valores que pueden almacenar las variables.)

Existen tres palabras clave de declaración:

  • const — para valores que no se van a reasignar (tu opción por defecto).
  • let — para valores que se van a reasignar.
  • var — la palabra clave original, mantenida por compatibilidad con versiones anteriores. Consulta El antiguo "var".

Comparación de let, const y var

Palabra claveÁmbito¿Reasignable?¿Redeclarable en el mismo ámbito?Hoisting
constbloqueNoNoTDZ
letbloqueNoTDZ
varfunciónHoisted, inicializado a undefined

El ejemplo siguiente muestra las diferencias prácticas entre let/const con ámbito de bloque y var con ámbito de función:

javascript— editable

Ámbito: dónde vive una Variable

El ámbito determina en qué parte del código se puede acceder a una variable. Para un tratamiento más profundo, consulta Ámbito de variable, closure.

Ámbito de bloque (let y const)

let y const solo son visibles dentro del bloque { ... } donde se declaran — un if, un bucle o cualquier par de llaves:

javascript— editable

Por eso let es la opción correcta para los contadores de bucle: cada iteración de un bucle for obtiene su propio enlace.

Ámbito de función (var)

var ignora los bloques. Su ámbito se limita a la función envolvente más cercana (o al ámbito global si está fuera de cualquier función), lo que es una fuente común de errores:

javascript— editable

Ámbito global

Una variable declarada fuera de cualquier función es global y accesible desde cualquier lugar. En los navegadores, un var de nivel superior se adjunta al objeto global window, mientras que let y const de nivel superior tienen ámbito de script y no lo hacen:

javascript— editable

Hoisting y la Zona Muerta Temporal

El hoisting significa que las declaraciones se procesan antes de que el código se ejecute. Las tres palabras clave difieren en cómo realizan el hoisting.

Una declaración var se eleva e inicializa a undefined, por lo que leerla antes de la línea que la asigna devuelve undefined en lugar de un error:

javascript— editable

let y const también se elevan, pero no se inicializan. Desde el inicio del bloque hasta la línea de declaración, la variable se encuentra en la Zona Muerta Temporal (TDZ) — acceder a ella lanza un ReferenceError:

javascript— editable

La TDZ es una característica, no una rareza: detecta el uso accidental antes de la declaración que var oculta silenciosamente.

const: Reasignación vs. Mutación

const impide reasignar la variable — no se puede apuntar el nombre a un nuevo valor. No hace que el valor en sí sea inmutable. Los object y los array almacenados en un const pueden seguir modificándose:

javascript— editable

Usa const para object y array siempre que no reasignes el enlace — documenta la intención y previene toda una clase de errores. Si realmente necesitas un object inmutable, usa Object.freeze().

Reglas de Nomenclatura y Convenciones

JavaScript impone algunas reglas estrictas para los nombres de variables:

  • Los nombres pueden contener letras, dígitos, _ (guion bajo) y $ (signo de dólar).
  • Los nombres no deben empezar con un dígito.
  • Los nombres son sensibles a mayúsculas y minúsculastotal y Total son variables distintas.
  • Las palabras clave reservadas como let, class o return no pueden usarse.
  • No se permiten espacios.

Además de las reglas, sigue estas convenciones para un código legible:

  • Usa nombres descriptivos: userAge, no x.
  • Usa camelCase para variables y funciones: firstName, itemCount.
  • Usa UPPER_SNAKE_CASE para constantes fijas: const MAX_SIZE = 100;.
  • Evita letras sueltas excepto para contadores de bucle de corta vida (i, j).
javascript— editable

Resumen

  • Usa const por defecto, let cuando necesites reasignar, y evita var en código nuevo.
  • let y const tienen ámbito de bloque; var tiene ámbito de función y se escapa de los bloques.
  • let/const viven en la TDZ antes de su declaración; var se lee como undefined.
  • const bloquea la reasignación, no la mutación — el contenido de object y array puede seguir cambiando.
  • Sigue las reglas de nomenclatura (sin dígito inicial, sin palabras clave, sensible a mayúsculas) y usa camelCase.

Para profundizar, lee El antiguo "var" y Ámbito de variable, closure.

Práctica

Práctica
¿Cuáles de las siguientes reglas se aplican al crear variables en JavaScript?
¿Cuáles de las siguientes reglas se aplican al crear variables en JavaScript?
Was this page helpful?