← Назад к вопросам

Какие знаешь способы объявления переменных в 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 = 'не используй';

Это обеспечивает чистоту кода, предсказуемость и защиту от ошибок случайного переприсвоения.

Какие знаешь способы объявления переменных в JavaScript? | PrepBro