Показать сообщение отдельно
  #3 (permalink)  
Старый 31.01.2021, 21:43
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,754

Переменные, объявленные var попадают в глобальный объект или имеют область видимости функции.
Т.е в вашем случае (когда var) будет всего одна глобальная переменная (содержащаяся в глобальном объекте window)
Переменные объявленные let имеют глобальную область видимости (это не тоже самое, что глобальный объект) или область видимости блока. Блок это все, что в {} тело функции или цикл - частный случай блока. Обнако у циклов блок начинается не с {, а с оператора for (или while)
Фактически на каждой итерации цикла for заводится своя переменная i.
Далее, когда вы создаете функцию
function() {
console.log(`fib[${i}] = ${fib[i]}`)
}
Она использует замыкание на переменную i, созданную именно на этой итерации.
Ответить с цитированием