Sobes.tech
Back to tasks
Junior — Senior
33

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

Companies where asked:

СБЕРСБЕР
Get help with live coding in real time with Sobes Copilot
Task condition

В функции 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.