var, let или const

Введение

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


Почему var уже не используют

Когда-то var был единственным способом объявить переменную. Сейчас же его считают устаревшим.

Причины простые:

  • переменные var живут в области видимости функции, а не блока {};
  • их можно переобъявлять, что легко приводит к ошибкам;
  • они «всплывают» (hoisting) странным способом: переменная существует до объявления, но равна undefined.

Современный JavaScript предлагает два инструмента лучше: let и const.


let: переменная, которая живёт в блоке

Основные свойства

let — это обычная изменяемая переменная, но с правильным, предсказуемым поведением:

  • видна только внутри блока, где объявлена;
  • не существует до момента объявления — попытка обратиться раньше вызовет ошибку;
  • в циклах создаёт новую переменную для каждой итерации.

Почему это важно

Такая логика делает код чище. Ошибок меньше, поведение очевиднее, особенно в условиях, циклах и функциях.

В больших проектах let помогает избежать случайных конфликтов имён и «магических» состояний.


const: как let, но значение нельзя заменить

const работает почти так же, как let, только значение изменить нельзя:

const age = 25
// age = 30 // Ошибка

Но здесь важно понимать одну вещь: заблокирована переменная, а не её содержимое.

Если внутри хранится объект или массив, свойства и элементы менять можно:

const user = {
  name: 'Pavel'
}

user.name = 'Pavlo' // полностью допустимо

Это поведение иногда путает новичков, но на практике удобно: объект остаётся тем же объектом, но его содержимое может обновляться.


Как выбирать: короткий и честный совет

Используй const по умолчанию

Так ты явно показываешь: значение меняться не должно. Это делает код предсказуемым.

Переходи на let, если точно планируешь изменить значение

Например:

  • счётчик в цикле,
  • состояние, которое будет обновляться,
  • флаг, который меняется в процессе работы функции.

И забудь про var

Для современных проектов он просто не нужен.


Заключение

Когда я писал эти карточки ещё в 2021 году, мне казалось, что тема уже устаканилась. Сейчас вижу: вопросы остаются до сих пор. И это нормально — JavaScript развивается, появляются новые практики, подходы, рекомендации.

Главное — писать понятный и предсказуемый код.
let и const дают для этого всё, что нужно.

В конце статьи будут мои старые визуальные карточки — возможно, они помогут разобрать тему ещё быстрее.