Вот код
for (var i = 0; i < 10; i++) {
setTimeout(function () {
console.log(i);
}, 0);
}
результатом его выполнения будет 10 раз выведено число 10. Вопрос почему? И тут же следующий вопрос:
for (let i = 0; i < 10; i++) {
setTimeout(function () {
console.log(i);
}, 0);
}
Почему в этом случае будет поледовательно выведено от 0 до 9? Я немогу понять в чем разница?
Это не дубликат вопроса. Потому что: Я думал что когда передаешь 0 в setTimeout эта функция выволнится немеделенно при каждой итерации. И я так и не понимаю почему в случае с let функция начинает выполняться при каждой итерации а не 10 раз подряд после цикла.
эта функция выволнится немеделенно- нет. Функция будет помещена в eventLoop и будет выполнена на следующей его итерации, которая, в свою очередь, не запустится, пока поток выполнения занят текущим синхронным кодом. – vp_arth Mar 31 '17 at 18:28letработает по-другому. Голосую за переоткрытие. Автору: вы можете прочитать про это здесь: https://learn.javascript.ru/let-const . Вкратце:letсоздает новую переменную в каждой итерации цикла (я не могу оформить это в ответе, тк, нельзя писать ответы к закрытым вопросам). – Crantisz Mar 31 '17 at 18:39