Какая разница между var, let и const в JavaScript?

Рассмотрим три ключевых отличия между объявлениями переменных в JavaScript:

  1. Область видимости (Scope)

var: Имеет функциональную область видимости. Переменная доступна внутри функции, где объявлена, или глобально, если объявлена вне функции.
let: Имеет блочную область видимости. Переменная доступна только внутри блока {}, где объявлена.
const: Также имеет блочную область видимости, как и let.

  1. Поднятие (Hoisting)

var: Поднимается. Может использоваться до объявления, но значение будет undefined.
let: Тоже поднимается, но нельзя использовать до объявления (временная мертвая зона).
const: Аналогично let, существует временная мертвая зона.

  1. Переназначение и изменение

var: Можно переназначать и изменять.
let: Можно изменять, но нельзя переобъявлять в той же области видимости.
const: Нельзя переназначать, но если содержит объект, свойства объекта можно изменять.

Пример:

// var
var x = 1;
var x = 2; // Допустимо
if (true) {
  var x = 3; // Изменит переменную x даже за пределами блока
}
console.log(x); // 3

// let
let y = 1;
// let y = 2; // Ошибка: нельзя повторно объявить
if (true) {
  let y = 2; // Новая переменная, только для этого блока
}
console.log(y); // 1

// const
const z = 1;
// z = 2; // Ошибка: нельзя переназначить константу
const obj = { value: 1 };
obj.value = 2; // Допустимо: изменяем свойство, а не саму константу
console.log(obj.value); // 2

© «Code==Poetry», 2025