Clausuras como estado en JavaScript
Una función que sobrevive a su ámbito conserva las variables que usó.
function makeCounter(start = 0) {
let count = start;
return {
increment: () => (count += 1),
reset: () => (count = start),
get value() {
return count;
},
};
}
const a = makeCounter();
const b = makeCounter(10);
a.increment();
a.increment();
b.increment();
console.log(a.value, b.value);
a.reset();
console.log(a.value, Object.keys(a));
Cómo funciona
- Cada llamada a la fábrica crea estado nuevo.
- Devolver varias funciones comparte un solo ámbito privado.
- Así hacía JavaScript los campos privados antes de #.
Palabras clave y builtins usados aquí
Objectconstfunctionletreturn
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 337
- Tokens
- 118
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 71 segundos.
Paso 1 de 4 en Clausuras; paso 1 de 16 en Funciones y patrones.