@sergei026
Стремлюсь стать верстальщиком

Разъясните пожалуйста как работают эти циклы?

for(var i=0; i<10; i++) {
    setTimeout(function() {
        alert(i);
    }, 100);
}

получается
10 раз число 10.

for(let i=0; i<10; i++) {
    setTimeout(function() {
        alert(i);
    }, 100);
}

Получается
Числа от 0 до 9. Но кааак?
  • Вопрос задан
  • 357 просмотров
Пригласить эксперта
Ответы на вопрос 2
shmatuan
@shmatuan
Vue, Node, RoR
переменная, объявленная через var, видна везде в функции.
Переменная, объявленная через let, видна только в рамках блока

https://learn.javascript.ru/let-const

Поэтому через таймаут в 1 случае будет число в переменной на данный момент прошедшего времени, а во втором - соответствующее значение в данной итерации цикла
Ответ написан
BRAGA96
@BRAGA96
Если var, то используйте замыкание
for (var i = 0; i < 10; i++) {
    (function (index) {
        setTimeout(function () {
            alert(index);
        }, 100);
    }(i));
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
20 июн. 2019, в 00:13
1000 руб./за проект
20 июн. 2019, в 00:01
2500 руб./за проект
19 июн. 2019, в 23:38
10000 руб./за проект