Uso de Closures para crear variables privadas en Vanilla JS
Introducción JavaScript nativo no tenía soporte para variables privadas en clases hasta hace poco. Si expones todas tus variables al exterior, cualquier script malicioso o error de lógica puede alterar el estado de tu aplicación. La solución clásica y más robusta es el uso de Closures, que permiten “encapsular” variables dentro de un ámbito al que solo funciones autorizadas pueden acceder.
Solución Rápida (Código)
function crearContador() {
let cuenta = 0; // Variable privada
return {
incrementar: () => ++cuenta,
obtenerCuenta: () => cuenta
};
}
const miContador = crearContador();
console.log(miContador.incrementar()); // 1
console.log(miContador.cuenta); // undefined (Protegida)
Explicación técnica
Un Closure ocurre cuando una función interna “recuerda” el entorno donde fue creada, incluso después de que la función externa haya terminado de ejecutarse. En el ejemplo, la variable cuenta vive en un ámbito cerrado. El objeto devuelto contiene métodos que mantienen una referencia viva a esa variable, pero no hay forma de modificarla directamente desde el exterior.
Este patrón de encapsulamiento es fundamental para construir librerías y componentes seguros. Evita la contaminación del espacio de nombres global y asegura que el estado interno solo cambie a través de la lógica definida por ti. Aunque las clases modernas ya incluyen campos privados (usando #), los Closures siguen siendo la base de muchos patrones funcionales en JavaScript y son esenciales para entender cómo funciona la memoria y el scope en el lenguaje.
Conclusión Dominar los ámbitos de las variables es lo que define a un arquitecto de software. No dejes de revisar nuestra guía sobre Programación Funcional en JavaScript para principiantes.