typestar

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

  1. Cada llamada a la fábrica crea estado nuevo.
  2. Devolver varias funciones comparte un solo ámbito privado.
  3. Así hacía JavaScript los campos privados antes de #.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 4 en Clausuras; paso 1 de 16 en Funciones y patrones.

Siguiente →