В чём разница между var, let и const?
Область видимости. var — функциональная, let и const — блочная: переменная живёт внутри {}.
Всплытие (hoisting). Все три объявления поднимаются наверх области видимости, но var сразу инициализируется значением undefined, а let/const попадают во временную мёртвую зону (TDZ) — обращение до строки объявления бросает ReferenceError.
Переприсваивание. const запрещает переприсваивать саму привязку, но не запрещает менять содержимое объекта: const a = []; a.push(1) — валидно.
Повторное объявление. var x дважды в одной области — можно, let x — SyntaxError.
В современном коде правило простое: по умолчанию const, let — когда значение меняется, var — не используем.
- Что выведет цикл с var и setTimeout внутри и почему?
- Что такое TDZ?