Lección 2 de 12 · Lectura y práctica
Variables: var, let y const
CONCEPTO CLAVE: Las variables son contenedores que nos permiten almacenar y manipular datos en nuestros programas. En JavaScript moderno, tenemos tres formas de declarar variables: var, let y const. La elección correcta entre.
Del concepto a la práctica
Taller de esta lección
La elección entre const y let depende de si reasignas la variable, no de si el dato parece importante. const impide cambiar la referencia; let permite actualizarla dentro de su bloque. Esta distinción hace visible qué valores son permanentes y cuáles evolucionan durante un proceso.
Ejemplo resuelto
Un contador de páginas leídas cambia, mientras el título permanece:
const titulo = "La casa azul";
let paginasLeidas = 12;
paginasLeidas = paginasLeidas + 8;
console.log(titulo, paginasLeidas); // La casa azul 20Declarar paginasLeidas con const produciría un error al reasignarla.
Pruébalo
Declara con
constel total de páginas.Declara con
letlas páginas leídas.Suma 15 páginas.
Imprime ambas variables.
Error frecuente: usar var por costumbre y ocultar una reasignación accidental. Corrección: empieza con const y cambia a let solo cuando el flujo lo requiera.
Usa total = 120 y leidas = 35; tras sumar 15, la salida esperada para las páginas leídas es 50.
Comprueba tu resultado
Verifica que el total no cambió y que la actualización ocurrió una sola vez dentro del bloque.
var tiene ámbito de función y permite redeclaración; let y const tienen ámbito de bloque. Además, una referencia constante a un objeto no congela sus propiedades: const ficha = { paginas: 10 }; ficha.paginas = 20; es válido, mientras reasignar ficha a otro objeto no lo es.

Mapa de prácticaUna condición decide qué camino ejecuta el programa. Un bucle repite una operación mientras queden elementos, y termina cuando la lista se agota. Separar ambas ideas ayuda a seguir el flujo y comprobar casos límite.
Ver la infografía en tamaño completo ↗¿Qué es una Variable?
Imagina una variable como una caja etiquetada donde puedes guardar información. Cada caja tiene un nombre único (identificador) que te permite encontrar lo que guardaste dentro. En JavaScript, estas "cajas" pueden contener diferentes tipos de datos: números, textos, booleanos, objetos y más.
Antes de usar una variable, debemos declararla. Esto le dice a JavaScript que Reserve espacio en memoria para almacenar nuestro valor. Vamos a explorar las tres palabras clave que tenemos disponibles.
La Palabra Clave "var"
var fue la forma original de declarar variables en JavaScript desde sus inicios. Aunque todavía funciona, tiene algunos comportamientos que pueden resultar confusos, especialmente para principiantes.
var nombre = "Carlos";
var edad = 25;
var esEstudiante = true;
console.log(nombre); // Imprime: Carlos
console.log(edad); // Imprime: 25
Características de var:
- Función alcance (function scope): La variable solo existe dentro de la función donde fue declarada.
- Hoisting: Las declaraciones se mueven al inicio de su ámbito, pero la asignación permanece en su lugar.
- Redeclaración permitida: Puedes declarar la misma variable múltiples veces sin errores.
function ejemploHoisting() {
console.log(mensaje); // undefined (no error, pero valor inesperado)
var mensaje = "Hola mundo";
console.log(mensaje); // "Hola mundo"
}
// Equivale aproximadamente a:
function ejemploHoisting2() {
var mensaje; // La declaración se "eleva"
console.log(mensaje); // undefined
mensaje = "Hola mundo"; // La asignación permanece aquí
console.log(mensaje); // "Hola mundo"
}
La Palabra Clave "let"
let fue introducida en ES6 (2015) yresolvió muchos de los problemas asociados con var. Es la opción recomendada cuando necesitas una variable cuyo valor cambiará con el tiempo.
let contador = 0;
contador = contador + 1; // Perfectamente válido
contador += 5;
console.log(contador); // Imprime: 6
let nombre = "Ana";
nombre = "María"; // Cambiamos el valor
console.log(nombre); // Imprime: María
Características de let:
- Bloque alcance (block scope): La variable solo existe dentro del bloque { } donde fue declarada.
- Temporal Dead Zone: No puedes usar la variable antes de su declaración, lo cual previene errores.
- Redeclaración prohibida: No puedes declarar la misma variable dos veces en el mismo ámbito.
// Ejemplo práctico: contador en un bucle
for (let i = 0; i < 5; i++) {
console.log("Iteración número " + i);
}
// console.log(i); // Error: i no está definido fuera del bucle
// Con var, el comportamiento sería diferente y problemático:
for (var j = 0; j < 5; j++) {
console.log("Iteración número " + j);
}
console.log(j); // Imprime: 5 (j sigue existiendo, ¡peligroso!)
La Palabra Clave "const"
const también fue introduced en ES6 y se usa para declarar valores que no cambiarán durante la ejecución del programa. Es ideal para referencias ثابتas como configuraciones, claves API o valores que queremos proteger de modificaciones accidentales.
const PI = 3.14159;
const NOMBRE_APLICACION = "MiApp";
const TAX_RATE = 0.16;
console.log(PI); // Imprime: 3.14159
console.log(NOMBRE_APLICACION); // Imprime: MiApp
Características de const:
- Bloque alcance (block scope): Al igual que let, solo existe dentro del bloque donde se declara.
- Inicialización obligatoria: Debes asignar un valor al momento de la declaración.
- No permite reassignación: No puedes cambiar el valor después de asignarlo.
// Con objetos:
const usuario = {
nombre: "Pedro",
edad: 30
};
// Esto NO funciona:
// usuario = { nombre: "Juan" }; // Error!
// Esto SÍ funciona (modificamos propiedades, no la referencia):
usuario.nombre = "Juan";
usuario.edad = 35;
console.log(usuario); // { nombre: "Juan", edad: 35 }
// Con arrays:
const colores = ["rojo", "azul", "verde"];
colores.push("amarillo"); // Perfectamente válido
console.log(colores); // ["rojo", "azul", "verde", "amarillo"]
Comparación Directa
| Característica | var | let | const |
|---|---|---|---|
| Alcance | Función | Bloque | Bloque |
| Hoisting | Sí (con undefined) | Temporal Dead Zone | Temporal Dead Zone |
| Redeclaración | Permitida | No permitida | No permitida |
| Reasignación | Permitida | Permitida | No permitida |
| Inicialización | Opcional | Opcional | Obligatoria |
| Uso recomendado | Ninguno (evitar) | Valores que cambian | Valores constants |
¿Cuál Debería Usar?
La regla general es sencilla:
- Por defecto, usa const. Si el valor no necesita cambiar, decláralo como constante. Esto hace tu código más predecible y expresivo.
- Si necesitas reasignar, usa let. Cuando sepas que el valor cambiará, let es la elección correcta.
- Evita var. En código moderno, no hay razón para usar var. Si ves var en código existente, considera refactorizarlo.
// Ejemplo completo: Calculadora de áreas
// Constantes (nunca cambian)
const PI = 3.14159;
const FACTOR_CONVERSIÓN = 0.01; // metros a centímetros
// Variables (pueden cambiar)
let áreaCírculo;
let radio = 5;
// Cálculo
áreaCírculo = PI * radio * radio;
console.log("Área del círculo:", áreaCírculo);
// Cambiamos el radio
radio = 10;
áreaCírculo = PI * radio * radio;
console.log("Nuevo área:", áreaCírculo);
Errores Comunes y Cómo Evitarlos
const precio = 100;
precio = 150; // TypeError: Assignment to constant variable
// Solución: Usa let
let precio2 = 100;
precio2 = 150; // Correcto
const nombre; // SyntaxError: Missing initializer in const declaration
// Solución: Siempre asigna un valor al declarar
const nombre = "Carlos";
let edad = 25;
let edad = 30; // SyntaxError: Identifier 'edad' has already been declared
// Solución: No redeclares
let edad2 = 25;
edad2 = 30; // Esto sí funciona
Buenas Prácticas
- Nombra descriptivamente: Usa nombres que expliquen el propósito de la variable.
- Seguir convenciones: Usa camelCase para variables (primer palabra en minúscula, siguientes con mayúscula inicial).
- Declare primero: Agrupa todas tus declaraciones al inicio de cada bloque o función.
- Inicializa inmediatamente: Evita dejar variables sin valor inicial cuando sea posible.
// Malos nombres (evitar)
let x = 5;
let data;
let temp;
// Buenos nombres (preferir)
let númeroDeUsuarios = 5;
let fechaDeNacimiento;
let temperaturaTemporal;
Ver más: Convenciones de nomenclatura en JavaScript
JavaScript tiene convenciones establecidas que la mayoría de desarrolladores siguen:
- camelCase para variables y funciones:
miVariable,calcularTotal - PascalCase para clases y constructores:
MiClase,UsuarioNuevo - UPPER_SNAKE_CASE para constantes que son valores globales:
MAXIMO_INTENTOS,API_KEY - Mayúsculas iniciales para constantes de configuración:
CONFIG,ESTADOS
Resumen Práctico
Usa const para valores que no cambiarán, let cuando necesites reasignar, y evita var completamente en código nuevo. Esta simple regla te protegerá de muchos errores comunes y hará tu código más fácil de entender.
¿Cuál es la salida del siguiente código?
const objeto = { a: 1 };
objeto.b = 2;
console.log(objeto);
- A) Error: No se puede modificar un objeto constante
- B) { a: 1 }
- C) { a: 1, b: 2 }
- D) undefined
const protege la referencia al objeto, no sus propiedades internas. Podemos agregar, modificar o eliminar propiedades, pero no podemos reasignar la variable a otro objeto diferente.
Sigue con JavaScript Esencial: Domina los Cimientos del Lenguaje
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.