В JavaScript есть три способа объявления переменных:
varletconstОсновные различия между ними касаются области видимости, возможности переопределения и всплытия (hoisting).
| Характеристика | var | let | const |
|---|---|---|---|
| Область видимости | Функциональная | Блочная | Блочная |
| Переопределение | Да | Да | Нет |
| Повторное объявление | Да | Нет | Нет |
| Всплытие (hoisting) | Да (без инициализации) | Да (но в TDZ) | Да (но в TDZ) |
| Инициализация | Можно позже | Можно позже | Обязательно сразу |
Temporal Dead Zone — это период между созданием переменной и её инициализацией, когда доступ к переменной вызывает ошибку.
console.log(a); // ReferenceError
let a = 10;var — устаревший способ, но всё ещё работаетfunction testVar() {
if (true) {
var message = "Привет из if";
}
console.log(message); // работает! → "Привет из if"
}let — предпочтительный способ для изменяемых переменныхfunction testLet() {
if (true) {
let message = "Привет из if";
console.log(message); // "Привет из if"
}
// console.log(message); // ReferenceError
}const — когда переменная не должна изменятьсяconst PI = 3.14;
PI = 3.1415; // TypeError: Assignment to constant variable.Важно: const запрещает менять саму ссылку, но не объект, на который она указывает:
const user = { name: "Alex" };
user.name = "Ivan"; // Это работает!const по умолчанию.let, если значение будет изменяться.var, если только не работаешь с очень старым кодом.function test() {
console.log(a);
var a = 5;
}
test();{
console.log(b);
let b = 10;
}let x = 10;
{
let x = 20;
console.log(x);
}
console.log(x);console.log(typeof undeclaredVar);
console.log(undeclaredVar);
var undeclaredVar = 42;if (true) {
const a = 5;
}
console.log(a);let name = "Aleksandr";
let name = "Evgeniya";Вопрос про var, let, const — это классика собеседований.
Важно не просто запомнить, а понимать разницу: в области видимости, переопределении и всплытии.
В реальной разработке выбирайте const и let, избегайте var.
Хочешь больше статей по подготовке к собеседованию? Подпишись на EasyAdvice, добавляй сайт в избранное и прокачивай себя каждый день 💪