JavaScript de Cero a Experto / Proyectos + retos
Reto de entrevista: memoize (caché de resultados)
Una función que envuelve a otra y RECUERDA sus resultados: si ya calculó algo
para cierto argumento, la próxima vez lo devuelve al instante sin recalcular.
Se llama memoización, y es el primer "decorador" serio que construyes —la base
mental de debounce y throttle, los jefes finales que siguen.
Reto
memoize: recordar para no recalcular
Qué debes construir
Una función memoizar(fn) que reciba una función y devuelva una versión
"con memoria": para los mismos argumentos, calcula UNA vez y luego devuelve el
resultado guardado.
const sumaLenta = (a, b) => a + b;
const suma = memoizar(sumaLenta);
suma(2, 3); // calcula → 5
suma(2, 3); // ¡recuerda! devuelve 5 sin volver a calcularReglas
- La función devuelta debe dar el mismo resultado que la original.
- Con los mismos argumentos, la original se ejecuta UNA sola vez.
- Pasa los tests del playground (uno cuenta cuántas veces se llamó la original).
15:00
Cuando estés listo, arranca el reloj.
Qué sigue
Tienes el patrón decorador dominado. Ahora los dos jefes finales del módulo,
hermanos y opuestos: throttle (deja pasar como máximo una vez cada X) y
debounce (espera a que pares). Primero throttle —el que controla el caudal.