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.
Попробуйте задание из курса
Откройте первый урок: теория и начало практики доступны без регистрации.