Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: hoisting, var, scope

Что произойдёт при обращении к переменной до объявления через var?

Этот вопрос проверяет понимание hoisting и особенностей области видимости переменных, объявленных через var.

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

При обращении к переменной, объявленной через var, до её объявления ошибки не будет. Переменная будет существовать, но её значение будет undefined. Это происходит из-за механизма поднятия объявлений. Однако инициализация значения происходит только в месте фактического объявления. Такое поведение часто приводит к трудноуловимым ошибкам.

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

В JavaScript объявления переменных через var поднимаются (hoisting) в начало функции или глобальной области видимости. Это означает, что движок JavaScript заранее знает о существовании переменной, но не о её значении.

Как это работает на практике

Когда код выполняется, JavaScript условно делает следующее:

  1. Объявляет переменную (var x)

  2. Инициализирует её значением undefined

  3. Выполняет код сверху вниз

Пример:

console.log(a); // undefined
var a = 10;

Фактически это эквивалентно:

var a;
console.log(a);
a = 10;

Почему это считается проблемой

  • Код выглядит так, будто используется необъявленная переменная

  • Ошибка не возникает, что усложняет отладку

  • Поведение отличается от let и const

Вывод

var допускает использование переменной до её объявления, но это считается плохой практикой. В современном JavaScript рекомендуется использовать let и const.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#hoisting

#var

#scope

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