Lección 7 de 13 · Lectura y práctica
Variables: let, const y var
Distingue reasignación, mutación, ámbito de bloque y zona temporal muerta con un ejemplo de JavaScript verificable.
Del concepto a la práctica
Taller de esta lección
La elección entre const y let depende de si cambia la referencia, no de si el valor interno es completamente inmóvil. Un array declarado con const puede recibir elementos; una variable let puede recibir otra referencia. El ámbito de bloque también determina qué nombres existen después de un if.
Ejemplo resuelto
const pendientes = [];
pendientes.push("Mapa");
let seleccion = pendientes[0];
seleccion = "Ruta";
console.log(pendientes[0], seleccion);
// Mapa RutaPruébalo
Añade
"Llaves"al array.Cambia
seleccionpara apuntar apendientes[1].Declara una constante dentro de un bloque y prueba su alcance fuera.
Explica qué referencia se reasigna.
Error frecuente: usar let para todo o intentar reasignar una const. Corrige usando const cuando el nombre conserve su referencia y let solo cuando la referencia cambie.
Comprueba tu resultado
El array debe contener Mapa y Llaves; cambiar seleccion no modifica el primer elemento. Si intentas reasignar pendientes, debe producir un error, mientras que push sí funciona.

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 ↗Elegir const o let según la reasignación
Una variable asocia un nombre con un valor. const impide reasignar ese nombre; no vuelve inmutable el objeto o array al que apunta. Usa let cuando el mismo nombre deba recibir otro valor. Ambas declaraciones tienen ámbito de bloque.
Ejemplo original para ejecutar en una consola local
const productos = [];
productos.push("cuaderno");
console.log(productos.length); // 1: el array se puede modificar
let total = 0;
total += 15;
console.log(total); // 15: se reasigna la variable
if (true) {
const etiqueta = "interno";
var legado = "función o ámbito superior";
}
console.log(typeof etiqueta); // "undefined": está fuera de su bloque
console.log(legado); // disponible en este ámbito
try {
console.log(antes);
let antes = 1;
} catch (error) {
console.log(error.name); // "ReferenceError": zona temporal muerta
}
Hoisting sin la regla falsa de «let y const no»
Las declaraciones let y const afectan al ámbito desde su inicio, pero no puedes acceder al valor antes de la inicialización: ese intervalo se conoce como zona temporal muerta. var se eleva e inicializa con undefined, y su ámbito no es el bloque de un if. «No puedes usarla antes» no significa que la declaración no tenga efecto antes de esa línea.
Una declaración const necesita inicializador. var puede aparecer en código antiguo; entenderlo te ayuda a mantenerlo, aunque para código nuevo suele ser más claro elegir const y cambiar a let sólo al necesitar reasignación.
Ejercicio con un carrito
Declara el array del carrito con const, añade dos productos y calcula el total con let. Después intenta reemplazar el array completo en una prueba separada: identifica el error de reasignación. Explica por qué push sí funcionó. No confundas la mutación del objeto con cambiar la referencia.
Comprobación: el ejemplo anterior debe imprimir 1, 15, undefined, el texto de legado y ReferenceError en ese orden. Consulta MDN: hoisting para ampliar las diferencias de inicialización y ámbito.
Sigue con JavaScript Fundamentals
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.