Answer

Answer

t.me/js_test

Ответ:

i: 4, element: undefined
i: 4, element: undefined
i: 4, element: undefined
i: 4, element: undefined

Объяснение:

На первой строчке просто объявляется массив из 4 элементов каждый из которых равен своему индексу. Далее идёт цикл и самое важное в нём это то что переменная i объявляется через ключевое слово var. Функция setTimeout создаёт функцию (замыкание), у которой есть доступ к внешней области видимости, представленной в данном случае циклом, в котором используется та самая переменная i. После того, как пройдут 3 секунды, функция выполняется и выводит значение i, которое, после окончания работы цикла, остаётся доступным и равняется 4. Переменная, в ходе работы цикла, последовательно принимает значения 0, 1, 2, 3, причём, последнее значение оказывается сохранённым в ней и после выхода из цикла. В массиве имеется четыре элемента, с индексами от 0 до 3, поэтому, попытавшись обратиться к arr[4], мы и получаем undefined.

Код:

const arr = new Array(4).fill(0).map((_, i) => i);

for (var i = 0; i < arr.length; i++) {
    setTimeout(function () {
        console.log("i: " + i + ", element: " + arr[i]);
    }, 3000);
}

Report Page