← Назад к вопросам
Какие знаешь способы объявления переменных в JavaScript?
1.3 Junior🔥 281 комментариев
#Node.js и JavaScript
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Способы объявления переменных в JavaScript
В JavaScript существует три основных способа объявления переменных, каждый из которых имеет свои особенности, область видимости и поведение.
1. var — устаревший способ
var был единственным способом объявления переменных до ES2015. Хотя он всё ещё работает, его использование не рекомендуется в современном коде.
var name = 'John';
var age = 30;
Характеристики:
- Функциональная область видимости (function scope), а не блочная
- Hoisting — переменные поднимаются в начало своей функции со значением
undefined - Переобъявление — можно несколько раз переобъявить одну переменную
- Инициализация по умолчанию —
undefined
function test() {
console.log(x); // undefined (hoisting)
var x = 10;
}
2. let — рекомендуемый способ для переменных
let введён в ES2015 и решает проблемы var. Это оптимальный выбор для большинства случаев.
let counter = 0;
let email = 'test@example.com';
Характеристики:
- Блочная область видимости (block scope) — видима только внутри
{}(если, цикл, функция) - Temporal Dead Zone — переменная существует до инициализации, но недоступна
- Переобъявление запрещено — нельзя дважды объявить с одним именем в одной области
- Можно переприсваивать — значение может измениться
if (true) {
let x = 10;
console.log(x); // 10
}
console.log(x); // ReferenceError: x is not defined
// Temporal Dead Zone
console.log(y); // ReferenceError
let y = 5;
3. const — для констант и объектов
const также из ES2015, используется для значений, которые не должны переприсваиваться.
const PI = 3.14159;
const MAX_USERS = 100;
const user = { name: 'John', age: 30 };
Характеристики:
- Блочная область видимости — как
let - Не переприсваивается — значение зафиксировано (но для объектов мутируется содержимое)
- Обязательная инициализация — нельзя объявить без значения
- Примитивы неизменяемы, объекты мутируемы
const name = 'John';
name = 'Jane'; // TypeError: Assignment to constant variable
const obj = { x: 10 };
obj.x = 20; // OK — мутируем содержимое
obj = {}; // TypeError — переприсвоение запрещено
Лучшие практики (2025)
Используй const по умолчанию, затем let если нужна переприсвоение, var — никогда в новом коде:
const API_URL = 'https://api.example.com';
const user = { name: 'John' };
let counter = 0;
counter++;
// Избегай var!
var oldStyle = 'не используй';
Это обеспечивает чистоту кода, предсказуемость и защиту от ошибок случайного переприсвоения.