javascript interview question #39

Что будет выведено на консоль?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Прежде чем мы начнем анализировать пример кода, давай попробуем его упростить. Избавимся на минутку от setTimeout.

Если мы просто оставим console.log внутри цикла for, то он выведет на экран все значения i от 0 до 4. На каждой итерации цикла на экране будет появляться новая цифра.

Но, когда мы добавляем setTimeout, то все меняется. Вызов функции console.log произойдет уже после того, как цикл завершится. Значение i будет равно 5.

А так как i объявлена с помощью ключевого слова var, у нее глобальная область видимости. В отличие от let, не получится сохранить отдельные значения для i для каждой итерации цикла внутри замыкания () => console.log(i).


ОТВЕТ: цифра 5 будет выведена на консоль 5 раз. Каждый раз с новой строки.