Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про 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 — это защитный механизм. Он заставляет писать код, где переменные используются только после явного объявления, делая поведение предсказуемым.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#tdz

#hoisting

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию