CodeForge

JavaScript de Cero a Experto / Funciones

Closures: la mochila de la función

Teoría22 min20 XP

Aquí está uno de los conceptos más famosos —y temidos— de JavaScript: los closures. Suena místico, pero es una idea simple con consecuencias enormes: una función puede RECORDAR las variables del lugar donde nació, incluso después de que ese lugar ya terminó. Es la base de patrones que usarás toda tu carrera. Con la analogía correcta, lo vas a entender de una vez.

La mochila que la función se lleva

El contador con memoria privada

El ejemplo clásico: una fábrica que crea contadores, cada uno con su propia cuenta guardada:

crearContador declara cuenta y devuelve una función que la usa. Aunque crearContador YA TERMINÓ, la función devuelta sigue recordando su cuenta (la lleva en la mochila) y la actualiza en cada llamada. Y cada contador que creas tiene su propia cuenta privada: contador y otro no se pisan. Nadie desde afuera puede tocar cuenta directamente — está encerrada en el closure.

Para qué sirve

crearContador() declara 'let cuenta = 0' y devuelve una función que hace cuenta++. Llamas const c = crearContador() y luego c() tres veces. ¿Por qué c() devuelve 1, 2, 3 y no siempre 1?

Mini-reto

En "Mi Bolsillo": escribe una fábrica function crearBolsillo(saldoInicial) que guarde el saldo en su mochila y devuelva una función gastar(monto) que reste del saldo y devuelva el saldo restante. Crea dos bolsillos con saldos distintos y comprueba que son independientes (gastar en uno no afecta al otro). Acabas de crear estado privado — la base de la programación orientada a objetos que verás en el módulo 11.

Qué sigue

Cierras la teoría de funciones con dos comportamientos que debes conocer para no llevarte sorpresas: el HOISTING (por qué algunas funciones se pueden usar antes de declararlas) y las IIFE (funciones que se ejecutan a sí mismas al instante). La próxima lección, antes del reto del módulo.