@yavaskript

Почему let-переменные не становятся свойствами глобального объекта?

Читаю на известном всем сайте-учебнике по JavaScript:

В браузере глобальные функции и переменные, объявленные с помощью var (не let/const!), становятся свойствами глобального объекта

Потом приводится следующий пример:
var gVar = 5;
alert(window.gVar); // 5 (становится свойством глобального объекта)

Если бы мы объявили переменную при помощи let, то такого бы не произошло:

и далее снова пример:
let gLet = 5;
alert(window.gLet); // undefined (не становится свойством глобального объекта)


Но мне не совсем понятно, почему так происходит. По идее let-переменные ограничиваются блоком кода. Если такая переменная объявлена вне блоков кода, то она должна быть ограничена только самим скриптом (по логике). Тогда почему let-переменная не становится глобальной для всего скрипта (не становятся свойствами глобального объекта)?
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
Любые переменные, объявленные при помощи var попадают в объект window (кроме тех, что объявлены в функциях). let, объявленная в начале файла скрипта, находится внутри глобального блока видимости этого файла. Если Вам будет проще, сам файл тоже блок кода.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы