Генератор счётчика с замыканием

Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.

Короткий ответ

Что ответить на собеседовании

Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.

Подробный разбор

Ответ с пояснениями

Условие

Функция createCounter должна вести себя следующим образом: При вызове createCounter(start) она возвращает новую функцию. Эта возвращённая функция, каждый раз будучи вызваной, увеличивает внутреннее значение счётчика на 1 и отдаёт текущий результат. Начальное значение счётчика задаётся параметром start при вызове createCounter(start). Если параметр опущен, счётчик стартует с 0.

/*
Пример:
const counter = createCounter(5);
console.log(counter()); // Вывод: 6
console.log(counter()); // Вывод: 7
console.log(counter()); // Вывод: 8
*/

const anotherCounter = createCounter();
console.log(anotherCounter()); // Вывод: 1
console.log(anotherCounter()); // Вывод: 2

function createCounter(n) {}

Ответ

Замкните изменяемую переменную со стартовым значением и возвращайте её после префиксного увеличения. Значение по умолчанию 0 даст первый результат 1.

function createCounter(start = 0) {
  let current = start;
  return () => ++current;
}
const counter = createCounter(5);
counter(); // 6
counter(); // 7

Каждый вызов createCounter создаёт независимую область состояния. Префиксный ++ возвращает уже увеличенное значение; постфиксный вернул бы предыдущее и не совпал с примерами. Предполагается числовой start; параметр по умолчанию срабатывает при отсутствии аргумента или undefined.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее