Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Почему при использовании let и const возникает ReferenceError

Вопрос проверяет понимание TDZ (temporal dead zone) и отличий let/const от var.

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

let и const поднимаются (hoisting есть), но не инициализируются сразу. До строки объявления переменная находится в TDZ, и любое обращение к ней приводит к ReferenceError. Это сделано намеренно, чтобы избежать скрытых багов, когда код читает переменную до ее логического объявления. В отличие от var, где до объявления возвращается undefined, let/const сразу сигнализируют об ошибке.

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

Определение

TDZ (temporal dead zone) — это промежуток времени от начала области видимости до строки инициализации переменной let или const, в котором переменная существует, но недоступна.

Что происходит пошагово

  1. Движок видит объявление let/const и резервирует имя в области видимости

  2. До строки объявления переменная находится в TDZ

  3. Любая попытка:

    • прочитать значение

    • использовать в выражении
      приводит к ReferenceError

Пример с let

'use strict';

console.log(a); // ReferenceError
let a = 10;

Для сравнения с var

'use strict';

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

Почему так сделали

  1. Чтобы ошибки были явными, а не замаскированными

  2. Чтобы код читался сверху вниз без “магии”

  3. Чтобы уменьшить количество багов в сложных блоках и циклах

Особенность const

  1. const тоже имеет TDZ

  2. Требует инициализацию сразу

'use strict';

const x; // SyntaxError

Вывод

ReferenceError при let/const — это защитный механизм. Он заставляет писать код, где переменные используются только после явного объявления, делая поведение предсказуемым.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#tdz

#hoisting

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