> Почему var всплывает и что происходит при всплытии в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Сбер

Стек: JavaScript

> Пример ответа

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

На практике это означает, что переменная, объявленная через var, становится доступной в своей области видимости с самого начала, но её значение до строки присваивания будет undefined. Например:

JAVASCRIPT
console.log(a); // undefined - переменная уже существует, но не инициализирована
var a = 5;
console.log(a); // 5

Интерпретатор видит этот код как:

JAVASCRIPT
var a; // объявление всплыло наверх
console.log(a); // undefined
a = 5; // инициализация осталась на месте
console.log(a); // 5

Почему так происходит? В ранних версиях JavaScript (ES5 и ранее) var был единственным способом объявления переменных, и такое поведение упрощало работу с функциями и циклами, хотя и могло приводить к неожиданным ошибкам. В современных стандартах (ES6+) рекомендуется использовать let и const, которые также всплывают, но находятся во "временной мёртвой зоне" (Temporal Dead Zone) до момента инициализации, что делает код более предсказуемым.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью