Una de las dudas más frecuentes cuando empiezas con JavaScript es cuándo usar var, let o const para declarar variables. En este artículo te explico la diferencia real entre los tres, con ejemplos prácticos y una regla sencilla para no equivocarte nunca.
Un poco de historia: por qué existen los tres
Durante muchos años, JavaScript solo tenía var para declarar variables. Con la llegada de ES6 (ECMAScript 2015), se introdujeron let y const para solucionar varios problemas que tenía var. Hoy en día, var está prácticamente en desuso y la mayoría de desarrolladores usan let y const exclusivamente.
¿Qué es var y por qué ya no se usa?
var fue la forma original de declarar variables en JavaScript. Tiene dos comportamientos que generan muchos bugs y confusión:
1. Scope de función, no de bloque
var tiene alcance de función. Eso significa que una variable declarada con var dentro de un if o un for es accesible fuera de ese bloque:
if (true) {
var nombre = "María";
}
console.log(nombre); // "María" — accesible fuera del if
Esto es un comportamiento contraintuitivo que provoca errores difíciles de detectar en proyectos grandes.
2. Hoisting
var sufre hoisting: JavaScript mueve la declaración al inicio de la función antes de ejecutar el código. Esto significa que puedes usar una variable antes de declararla sin que dé error:
console.log(edad); // undefined (no da error)
var edad = 25;
Aunque no da error, devuelve undefined en lugar del valor esperado, lo que genera bugs silenciosos muy difíciles de rastrear.
¿Qué es let?
let se introdujo en ES6 para solucionar los problemas de var. Tiene las siguientes características:
Scope de bloque
Una variable declarada con let solo existe dentro del bloque { } donde fue declarada:
if (true) {
let nombre = "María";
}
console.log(nombre); // ReferenceError: nombre is not defined
Esto es el comportamiento esperado y evita muchos errores.
No se puede usar antes de declarar
console.log(edad); // ReferenceError
let edad = 25;
Se puede reasignar
El valor de una variable let se puede cambiar después de declararla:
let puntos = 0;
puntos = 10; // correcto
puntos = 20; // correcto
¿Qué es const?
const también se introdujo en ES6. Funciona igual que let en cuanto al scope de bloque, con una diferencia importante: no se puede reasignar.
const PI = 3.14159;
PI = 3; // TypeError: Assignment to constant variable
Esto no significa que el valor sea inmutable en todos los casos. Si declaras un objeto o un array con const, no puedes reasignar la variable, pero sí puedes modificar su contenido:
const usuario = { nombre: "Carlos", edad: 25 };
usuario.edad = 26; // correcto — modificamos una propiedad
usuario = {}; // TypeError — no podemos reasignar la variable
Tabla comparativa: var vs let vs const
Aquí tienes un resumen visual de las diferencias:
| Característica | var | let | const |
|---|---|---|---|
| Scope | Función | Bloque | Bloque |
| Hoisting | Sí (undefined) | Sí (error) | Sí (error) |
| Reasignable | Sí | Sí | No |
| Redeclarable | Sí | No | No |
| Uso recomendado | Nunca | Variables que cambian | Variables fijas |
¿Cuándo usar let y cuándo usar const?
La regla es sencilla y la usan la mayoría de equipos profesionales:
- Usa
constpor defecto para todo. Si no sabes si la variable va a cambiar, usaconst. - Usa
letsolo cuando necesites reasignar el valor. Por ejemplo, contadores, acumuladores o variables que cambian en un bucle. - No uses
varnunca en código nuevo. Solo lo encontrarás en código antiguo.
Ejemplos prácticos de cuándo usar cada uno:
// const — el valor no va a cambiar
const URL_API = "https://api.ejemplo.com";
const MAX_INTENTOS = 3;
const usuario = { nombre: "Ana" };
// let — el valor puede cambiar
let intentos = 0;
let estaLogueado = false;
for (let i = 0; i < 10; i++) {
// i necesita cambiar en cada iteración → let
console.log(i);
}
Errores comunes que debes evitar
Usar var en código nuevo
Si estás aprendiendo JavaScript hoy, ignora var por completo. Todo el código moderno usa let y const.
Usar let cuando deberías usar const
Muchos principiantes usan let para todo porque «así pueden cambiarlo si hace falta». Pero usar const por defecto hace tu código más predecible y fácil de leer — cualquiera que lea el código sabe que esa variable no va a cambiar.
Confundir const con inmutabilidad
const no hace que el valor sea inmutable, solo que no puedes reasignar la variable. Los objetos y arrays declarados con const se pueden modificar internamente.
Resumen rápido
Si tuvieras que quedarte con una sola cosa de este artículo, que sea esta:
- Usa
constsiempre que puedas - Usa
letcuando el valor necesite cambiar - Olvídate de
var
Con esta regla de tres cubrirás el 99% de los casos y tu código será más limpio, más seguro y más fácil de mantener.
Si quieres seguir aprendiendo JavaScript, el siguiente paso es entender cómo funcionan las funciones en JavaScript moderno: funciones tradicionales vs arrow functions y cuándo usar cada una.