Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: execution, context, hoisting

В какой момент создаются переменные внутри функции?

Вопрос проверяет понимание фаз выполнения функции и механизма hoisting.

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

Переменные внутри функции создаются на этапе подготовки контекста выполнения, ещё до выполнения кода функции. Движок JavaScript сначала создаёт переменные и функции, а затем выполняет код построчно. При этом var и функции инициализируются иначе, чем let и const. Последние находятся в так называемой временной мёртвой зоне до момента объявления.

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

Создание переменных происходит не в момент выполнения строки, а раньше — при создании контекста выполнения функции.

1) Две фазы выполнения функции

Когда вызывается функция, движок проходит два этапа:

  1. Creation phase (создание контекста):

    • создаются переменные

    • создаются функции

    • формируется scope

  2. Execution phase:

    • код выполняется построчно

2) Что происходит с разными типами объявлений

Определение: Hoisting — механизм, при котором объявления переменных и функций обрабатываются до выполнения кода.

Поведение:

  1. var

    • создаётся и инициализируется значением undefined

  2. let и const

    • создаются, но не инициализируются

    • доступ запрещён до строки объявления (TDZ)

  3. function declaration

    • создаётся полностью

Пример:

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

3) Временная мёртвая зона

Определение: Temporal Dead Zone (TDZ) — область кода от начала блока до объявления переменной let или const, где доступ к ней запрещён.

Пример:

console.log(x); // ReferenceError
let x = 5;

4) Почему это важно

  1. Объясняет порядок выполнения кода.

  2. Помогает избегать ошибок с undefined.

  3. Позволяет правильно проектировать область видимости.

Вывод: переменные создаются на этапе создания контекста выполнения, но инициализируются по-разному в зависимости от типа объявления.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#execution

#context

#hoisting

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