IIFE создаёт закрытую переменную счётчика и возвращает функцию, которая читает и увеличивает её. Снаружи доступна только возвращённая функция.
Счётчик, реализованный через самовызывающееся выражение
IIFE создаёт закрытую переменную счётчика и возвращает функцию, которая читает и увеличивает её. Снаружи доступна только возвращённая функция.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать функцию, которая будет увеличивать своё внутреннее значение на 1 при каждом вызове, начиная с 0. В глобальном пространстве имён должна быть доступна только сама функция – никаких дополнительных переменных. Реализуйте решение, используя IIFE (Immediately Invoked Function Expression).
Ответ
IIFE создаёт закрытую переменную счётчика и возвращает функцию, которая читает и увеличивает её. Снаружи доступна только возвращённая функция.
const counter = (() => {
let value = 0;
return () => value++;
})();
// counter() → 0, затем 1, затем 2
Здесь «начиная с 0» означает ноль при первом вызове. Если первый результат должен быть 1, используйте ++value. Локальная value живёт благодаря замыканию и не становится отдельной глобальной переменной.