torna alle lezioni

Impostare e decrementare il contatore

importanza: 5

Modificate il codice di makeCounter() in modo tale che il counter possa essere anche decrementato e reimpostato:

  • counter() dovrebbe ritornare il prossimo numero (come già fa).
  • counter.set(value) dovrebbe impostare il contatore a value.
  • counter.decrease() dovrebbe decremetare il contatore di 1.

Vedi il codice in sandbox per un esempio completo.

P.S. Potete usare sia una closure che una proprietà di funzione. O scrivere entrambe le varianti.

Apri una sandbox con i test.

La soluzione utilizza count come variabile locale, ma i metodi aggiuntivi sono scritti dentro counter. Condividono lo stesso lexical environment esterno e possono accedere al valore di count.

function makeCounter() {
  let count = 0;

  function counter() {
    return count++;
  }

  counter.set = value => count = value;

  counter.decrease = () => count--;

  return counter;
}

Apri la soluzione con i test in una sandbox.