Introducción a las Declaraciones de Variables en JavaScript
En JavaScript, existen tres formas principales de declarar variables: var, let y const. Cada una tiene características únicas que afectan el ámbito, la mutabilidad y el comportamiento durante la ejecución del código.
var: Declaración Tradicional
var tiene alcance de función, lo que significa que una variable declarada con var dentro de un bloque como if o for puede ser accesible fuera de ese bloque.
function demostrarAlcance() {
if (true) {
var contador = 5;
}
console.log(contador); // Se imprime 5, ya que var tiene alcance de función
}
Permite la redeclaración de variables con el mismo nombre sin errores, lo que puede llevar a sobreescrituras accidentales.
var valor = 10;
var valor = 20; // Esto es válido y sobreescribe el valor anterior
Las variables declaradas con var se elevan al inicio de su ámbito durante la fase de compilación, pero su asignación permanece en su lugar original.
console.log(temp); // Se imprime undefined, no causa error
var temp = 50;
let: Alcance de Bloque Moderno
let declara variables con alcance de bloque, restringiéndolas al bloque {} donde se definen.
if (true) {
let indice = 1;
}
console.log(indice); // Lanza un error: indice no está definido
Prohíbe la redeclaración de variables con el mismo nombre en el mismo bloque.
let cantidad = 3;
let cantidad = 4; // Error: ya se ha declarado cantidad
Existe una "zona muerta temporal" donde la variable no es accesible antes de su declaración.
console.log(precio); // Error: no se puede acceder a precio antes de la inicialización
let precio = 100;
En bucles, let garantiza que cada iteración tenga su propia variable, evitando errores comunes con closures.
for (let paso = 0; paso < 3; paso++) {
setTimeout(() => console.log(paso), 0); // Imprime 0, 1, 2
}
const: Constantes Inmutables
const requiere inicialización al momento de la declaración; de lo contrario, se produce un error.
const GRAVEDAD = 9.8;
// const NO_DEFINIDO; // Esto causaría un error
Para tipos primitivos como números o cadenas, el valor no puede ser reasignado, aunque para objetos y arrays, los elementos internos sí pueden modificrase.
const URL_BASE = "http://api.ejemplo.com";
// URL_BASE = "http://nueva.url"; // Error: reasignación no permitida
const usuario = { nombre: "Ana" };
usuario.nombre = "Luis"; // Esto es válido, ya que se modifica una propiedad
const tiene alcance de bloque, similar a let.
{
const CLAVE = "secreto";
}
console.log(CLAVE); // Error: CLAVE no está definida fuera del bloque
Prácticas Recomendadas
Evita el uso de var en código moderno, ya que let y const ofrecen mayor seguridad y claridad.
Prefiere const por defecto para variables que no necesitan reasignación; usa let solo cuando sea necesario cambiar el valor.
Para declarar múltiples variables, utiliza la separación por comas para reducir código redundante.
let nombre = "Carlos", edad = 25, puntuacion = 90;