Answer

Answer

t.me/js_test

Ответ:

function makeCounter() {
  let count = 0;

  function counter() {
    return count++;
  }

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

  return counter;
}

Объяснение:

Объявляем count в верхнем скоупе - это будет наше состояние. Создаём функцию counter которая при вызове возвращает текущее значение count а потом увеличивает его на единицу. Дальше самое интересное, функцию можно использовать как объект, то есть мы можем задать свойства и методы, как например decrease и set которые уменьшают count на один и ставят count конкретное значение соответственно.

Код для проверки:

function makeCounter() {
  let count = 0;

  function counter() {
    return count++;
  }

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

  return counter;
}

const counter = makeCounter();
console.log(counter()); // 0
console.log(counter()); // 1
counter.decrease();
counter.decrease();
console.log(counter()); // 0
counter.set(20);
console.log(counter()); // 20

Report Page