Угадай что выведется с let и var
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i)
}, 1000)
}
Почему с var выводит 10 десяток, а с let от 0 до 9? Я так понимаю, если var-ом то i после одной секунды имеет значение 10, потому что цикл исполняется быстрее, чем одна секунда, а с let? Как let замыкает переменную внутри функции и почему var не может этого? Если объяснение типа "ну блочная область видимости", то я не знаю что это означает, можете объяснить?
var глобальный, и за секунду цикл стробатывает 10 раз, и он уже равен 10, а let локален и для каждого таймаута свой
Обсуждают сегодня