let, const и var в JavaScript: в чём разница и что выбрать
· 3 мин чтения СтатьяJavaScript

let, const и var в JavaScript: в чём разница и что выбрать

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

Перейти к практике по теме курса ↓

Короткое правило: по умолчанию пишите const, а let — только там, где значение потом меняется. var в новом коде не нужен: он остался от старого JavaScript и ведёт себя так, что ошибки из-за него ищут часами.

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

const price = 500; — после этого написать price = 600 нельзя, браузер ответит ошибкой. Это не ограничение, а подсказка читателю: значение не поменяется, можно не следить за ним по всему коду.

Важная тонкость: const запрещает переназначить имя, а не менять содержимое. Если в константе лежит массив или объект, в него можно добавлять:

const cart = [];
cart.push("хлеб");   // можно: меняется содержимое
cart = [];           // ошибка: переназначение имени

let: значение, которое меняется

Счётчик в цикле, сумма, которую копят, флаг «уже нажали» — всё это let:

let total = 0;
for (const item of prices) {
  total = total + item;
}

Обратите внимание: переменная цикла здесь const — на каждом шаге она новая и внутри шага не меняется.

Чем плох var

  • Не видит границ блока. Переменная, объявленная через var внутри if или цикла, видна и снаружи. let и const живут только внутри своих фигурных скобок.
  • Поднимается наверх. К var можно обратиться до строки, где он объявлен, и получить undefined вместо ошибки. Опечатка в порядке строк превращается в тихий неверный результат.
  • Объявляется дважды. var x = 1; var x = 2; — браузер промолчит. С let вторая строка сразу даст ошибку, и дубль найдётся за секунду.

Все три особенности — не баги, а старые правила языка. Их не меняют, чтобы не сломать миллионы сайтов, а вместо этого в 2015 году добавили let и const.

Как выбирать на практике

Пишите const. Если дальше по коду понадобилось присвоить новое значение — поменяйте на let. Встретили var в чужом коде — читайте его как let, но помните, что он виден за пределами блока. Такой порядок даёт код, в котором по одному слову видно, что меняется, а что нет.

Где потренироваться

Переменные разбирает второй урок курса JavaScript: объявить, поменять, найти ошибку в чужом коде — задания решаются прямо на странице. Типы значений, которые кладут в переменные, — третий урок, а весь курс JavaScript с нуля доходит до страниц, которые реагируют на действия человека. Если вы ещё выбираете первый язык, пригодится статья Python или JavaScript.

Попробуйте задание из курса

Откройте первый урок: теория и начало практики доступны без регистрации.

Курс JavaScript с нуля Код пишется и проверяется прямо в браузере — первые уроки открыты без регистрации.
Открыть курс

Ещё в блоге

Новый курс Как освоить 1С: Бухгалтерию: курс о проводках, ведомости и закрытии месяца План счетов и проводки, оборотно-сальдовая ведомость, банк и касса, авансы, НДС, себестоимость, основные средства, зарплата, закрытие месяца и отчётность. · 3 мин чтения Новый курс Как всё успевать: бесплатный курс тайм-менеджмента с погружением Как планировать неделю и день, говорить «нет», честно оценивать время, не откладывать и не выгорать. Двенадцать уроков с заданиями, бесплатно. · 3 мин чтения Новый курс Как выучить французский с нуля: курс со звуком — чтение, артикли и первые разговоры Немые буквы и носовые звуки, être и avoir, артикли и частичный артикль, вопрос и ne… pas, числа 70–99, кафе и passé composé. Каждую фразу можно послушать. · 3 мин чтения Новый курс Как продавать на Ozon: бесплатный курс с погружением в схемы FBO и FBS, карточку и деньги на единицу Схемы FBO, FBS и realFBS, юнит-экономика под свою схему, карточка и поиск, кластеры и поставки, индекс цен, акции, продвижение и работа на двух площадках. · 3 мин чтения