← Volver a todas las Posts

Entendiendo los closures de JavaScript

¿Qué es un closure?

Un closure es la combinación de una función agrupada (encerrada) junto con las referencias a su estado circundante (el entorno léxico). Dicho de otra forma, un closure te da acceso al ámbito de una función externa desde una función interna.

¿Por qué importan?

Los closures son una de las características más potentes de JavaScript. Te permiten:

  • Emular métodos privados
  • Crear fábricas de funciones
  • Mantener estado en un entorno que de otro modo no lo tendría

Ejemplo práctico

function createCounter() {
  let count = 0;
  return {
    increment: () => ++count,
    decrement: () => --count,
    getCount: () => count,
  };
}

const counter = createCounter();
console.log(counter.increment()); // 1
console.log(counter.increment()); // 2
console.log(counter.getCount());  // 2

Este patrón se usa muchísimo en el desarrollo moderno con JavaScript.