Sobes.tech
Назад к задачам
Junior — Senior
34

Создание массива функций с замыканием и выводом индексов

Компании, где спрашивали:

СБЕРСБЕР
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В функции assemblePages формируется массив, заполняемый функциями, которые выводят текущий номер страницы. При каждом проходе цикла создаётся новая функция, сохраняющая значение счётчика. После завершения цикла массив возвращается, и отдельные функции можно вызвать для вывода нужных номеров.

function assemblePages() {
    let pages = [];
    let i = 0;
    while (i < 10) {
        const printPage = function () {
            console.log(i);
        };
        pages.push(printPage);
        i++;
    }
    return pages;
}

let bookReader = assemblePages();

bookReader[0]();
bookReader[5]();

В данном примере демонстрируется, как замыкание сохраняет ссылку на переменную счётчика, поэтому при вызове функций после завершения цикла будет выведено последнее значение счётчика, а не значение на момент создания функции. Это типичный кейс для обсуждения поведения замыканий в JavaScript.