Внешняя функция создаёт отдельный счётчик и возвращает функцию, которая увеличивает его. Замыкание сохраняет переменную между вызовами, не выставляя её наружу.
Создание счётчика через замыкание
Внешняя функция создаёт отдельный счётчик и возвращает функцию, которая увеличивает его. Замыкание сохраняет переменную между вызовами, не выставляя её наружу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте функцию, которая при вызове возвращает внутреннюю функцию‑счётчик. Внутренний счётчик должен хранить своё состояние с помощью замыкания, увеличивая значение на 1 при каждом вызове и возвращая новое значение. Переменные можно переименовать, но все блоки кода должны оставаться без изменений.
Ответ
Внешняя функция создаёт отдельный счётчик и возвращает функцию, которая увеличивает его. Замыкание сохраняет переменную между вызовами, не выставляя её наружу.
function createCounter() {
let count = 0;
return function () { return ++count; };
}
const next = createCounter();
console.log(next()); // 1
console.log(next()); // 2
Другой вызов createCounter() создаст независимое состояние, снова начиная с единицы. Если объявить count внутри возвращённой функции, он будет обнуляться каждый раз. Исходные блоки для ограничения «не менять код» в условии не приведены, поэтому показана самостоятельная реализация указанного поведения.