Learn JavaScript

Переменные - let и const (почему так)

Переменная - это имя, под которым хранится значение. Значение может использоваться много раз, а при необходимости - изменяться. В JavaScript для объявления переменных чаще всего используют let и const.

Зачем вообще нужны переменные

Без переменных код быстро превращается в набор повторов. С переменными проще:

  • хранить данные (числа, строки, объекты)
  • переиспользовать значения
  • делать вычисления и сохранять результат
  • читать код как “историю”, а не как случайный набор выражений

Пример без переменных:

(1200 - (1200 * 15) / 100) + " руб."

Тот же смысл с переменными:

const price = 1200;
const discount = 15;
const finalPrice = price - (price * discount) / 100;

finalPrice + " руб."

let - переменная, которую можно переназначать

let объявляет переменную, значение которой можно менять (переназначать).

let count = 0;
count = count + 1;
count = count + 1;

count; // 2

Переназначение - это когда переменной присваивается новое значение через =.

let city = "Berlin";
city = "Hamburg";

const - переменная, которую нельзя переназначать

const объявляет переменную, которую нельзя переназначить.

const pi = 3.14159;
pi = 3; // TypeError: Assignment to constant variable

Идея const - значение не должно “случайно” поменяться. Это повышает предсказуемость кода.

Важное уточнение про объекты и массивы

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

const user = { name: "Jack", role: "admin" };
user.role = "editor"; // допустимо

const list = [1, 2, 3];
list.push(4); // допустимо

Запрещено именно вот это:

const user = { name: "Jack" };
user = { name: "John" }; // нельзя переназначить

Почему обычно начинают с const

Обычно выбирают такой принцип:

  • по умолчанию использовать const
  • переходить на let, только когда нужно переназначение

Причины:

  • меньше случайных изменений
  • проще читать - видно, где данные стабильны
  • удобнее поддерживать код (особенно через время)

Пример, где const подходит лучше:

const year = 2026;
const title = "Как выучить JavaScript";

Пример, где без let не обойтись:

let total = 0;
total = total + 10;
total = total + 5;

Объявление и использование - несколько правил

1) Нельзя использовать переменную до объявления

С let и const переменная существует в “временной мертвой зоне” (TDZ) до строки объявления. Это значит, что обратиться к ней раньше нельзя.

console.log(value); // ReferenceError
const value = 10;

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

2) const требует начального значения

const нельзя объявить “пустой” и присвоить позже.

const token; // SyntaxError
token = "abc";

Нужно сразу задать значение:

const token = "abc";

Если значение появится позже, чаще всего нужен let:

let token;
token = "abc";

3) Имена переменных должны быть понятными

Ориентир - название отвечает на вопрос “что здесь лежит”.

Хорошо:

const userName = "Jack";
const maxRetries = 3;
const isActive = true;

Плохо (неясно, что значит):

const a = 10;
const data1 = "x";

Типичные ошибки

Ошибка - попытка поменять const

const count = 1;
count = 2; // TypeError

Решение - если переназначение действительно нужно, использовать let:

let count = 1;
count = 2;

Ошибка - ожидание, что const “замораживает” объект

const settings = { theme: "light" };
settings.theme = "dark"; // это работает

Если нужна реальная “заморозка”, используется Object.freeze, но это отдельная тема и применяется не всегда.

Когда что использовать - быстрое правило

  • const - значение не должно переназначаться
  • let - значение будет меняться со временем (счетчик, накопление суммы, переключение состояния)

Короткий итог

let и const решают одну задачу - хранить значения, но с разной степенью “защиты”. В большинстве случаев удобно начинать с const и переходить на let только там, где без переназначения не обойтись.