Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: global, scope, object

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

Вопрос проверяет понимание различий между глобальным объектом и глобальной областью видимости в JavaScript.

Короткий ответ

Переменные var в глобальной области становятся свойствами window, а let и const — нет. Это связано с тем, что let и const создаются в глобальном лексическом окружении, а не как свойства объекта. Они доступны в глобальной области видимости, но не через window. Это сделано для более безопасной и предсказуемой работы со scope.

Длинный ответ

Важно различать глобальную область видимости и глобальный объект — это не одно и то же.

1) Как работает var

При объявлении:

var a = 10;

Происходит:

  1. Переменная добавляется в глобальный scope.

  2. Она становится свойством window.

Проверка:

console.log(window.a); // 10

2) Как работают let и const

При объявлении:

let b = 20;
const c = 30;

Происходит:

  1. Переменные создаются в глобальном лексическом окружении.

  2. Они не добавляются в объект window.

Проверка:

console.log(window.b); // undefined

3) Почему так сделано

Основные причины:

  1. Избежать случайного загрязнения глобального объекта.

  2. Улучшить изоляцию кода.

  3. Сделать поведение более предсказуемым.

4) Практический вывод

  1. Не стоит полагаться на доступ к переменным через window.

  2. Лучше явно экспортировать значения, если они нужны глобально.

Вывод: let и const создают переменные в глобальном scope, но не в глобальном объекте, поэтому они не появляются в window.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#global

#scope

#object

Подпишись на React Developer в телеграм