edubun
Русский

Переменные: let и const

Переменная представляет собой имя для значения. После let score = 10 слово score означает 10, пока ты не дашь ему что-то другое.

Имя для значения, чтобы использовать его снова

До сих пор каждое значение мы набирали прямо в console.log и тут же забывали. Настоящим программам нужно помнить: очки игрока, товары в корзине, имя, которое кто-то ввёл. Переменная похожа на коробку с именем, в которой лежит значение. Ты создаёшь её один раз, а потом пишешь её имя везде, где нужно это значение.

let score = 10;
console.log(score);        // 10
console.log(score + 5);    // 15

Строка let score = 10; делает две вещи. Ключевое слово let объявляет новую переменную с именем score, а = 10 кладёт в неё значение 10. Знак равенства здесь не значит «равно», как в математике. Он значит «сохрани значение справа под именем слева». Программисты называют это присваиванием. Когда score потом встречается без кавычек, JavaScript заглядывает в коробку и берёт значение оттуда.

Изменение значения с let

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

let score = 10;
score = 25;
console.log(score);        // 25
score = score + 5;
console.log(score);        // 30

Строка score = score + 5; выглядит невозможной с точки зрения математики, но если читать её как инструкцию, всё понятно. Сначала JavaScript вычисляет правую часть: текущее score плюс 5, то есть 30. Затем он сохраняет 30 обратно в score. Старого значения больше нет. Этот приём, прочитать переменную и сохранить в неё обновлённое значение, позволяет программам считать, складывать итоги и следить за всем, что меняется.

const для значений, которые не меняются

Ключевое слово const тоже объявляет переменную, но значение ей нужно дать сразу, и присвоить новое уже нельзя. Попытка остановит программу с TypeError: Assignment to constant variable. Эта ошибка полезна. Если значение не должно меняться, например число дней в неделе или ставка налога, объявление через const гарантирует, что ошибка в другом месте программы не перезапишет его незаметно.

const daysInWeek = 7;
console.log(daysInWeek * 4);   // 28
// daysInWeek = 8;  остановит программу с TypeError

Хорошая привычка, которую советуют многие руководства по стилю: по умолчанию пиши const и переходи на let, только когда знаешь, что значение будет меняться. В коде в интернете ты можешь встретить и старое ключевое слово var. Оно всё ещё работает, но подчиняется более свободным правилам, из-за которых бывают неожиданные ошибки, поэтому в этом курсе используются только let и const.

Правила для имён

Имя переменной может содержать буквы, цифры, подчёркивание _ и знак доллара $, но не может начинаться с цифры и содержать пробелы. Так что total2 подходит, а 2total нет. Имена различают регистр: score и Score являются двумя разными переменными. Несколько слов, например let, const, if и for, зарезервированы языком, и их нельзя брать в качестве имён. Если имя состоит из нескольких слов, программисты на JavaScript обычно пишут его в стиле camelCase: первое слово строчными буквами, а каждое следующее с заглавной, как в totalPrice или daysInWeek. Выбирай имена, которые говорят, что значит значение; price скажет читателю гораздо больше, чем x.

Объявлена, но пуста, и использована слишком рано

Если написать let answer; без значения, переменная существует, но содержит undefined, пока ты что-нибудь не присвоишь. Использовать переменную let или const в строке выше её объявления нельзя: будет ReferenceError: Cannot access 'answer' before initialization. Имя, которое вообще не объявляли, даёт ReferenceError: answer is not defined. На практике оба сообщения значат одно: проверь написание и проверь, что объявление стоит первым.

let name = value; можно изменить позже. const name = value; не меняется никогда.

переменнаяИмя, в котором хранится значение
объявитьСоздать переменную через let или const
присваиваниеСохранение значения с помощью =
letОбъявляет переменную, значение которой может меняться
constОбъявляет переменную, которой нельзя присвоить новое значение
camelCasetotalPrice: следующие слова начинаются с заглавной
undefinedТо, что лежит в объявленной переменной, пока ей не дали значение
зарезервированное словоСлово вроде let или if, которое нельзя сделать именем
  1. Что выведет этот код?
    let x = 4;
    x = x + 3;
    console.log(x);
  2. Что выведет этот код?
    let n = 2;
    n = 10;
    n = n * 3;
    console.log(n);
  3. Что выведет этот код?
    let city = "Busan";
    console.log("city");
    • Busan
    • city
    • undefined
  4. Что произойдёт, когда этот код выполнится?
    const max = 5;
    max = 6;
    • max станет 6
    • TypeError: Assignment to constant variable
    • Ничего, max молча останется 5
  5. Какое имя переменной правильное?
    • 2ndPlace
    • second place
    • secondPlace
  6. Что выведет этот код?
    let total;
    console.log(typeof total);
  7. Что выведет этот код?
    let a = 5;
    let b = a;
    a = 9;
    console.log(b);
  8. Являются ли score и Score одной переменной?
    • Да
    • Нет
  9. Какое ключевое слово подходит для числа минут в часе?
    • const
    • let
    • var
  10. Что выведет этот код?
    let word = "hi";
    word = word + word;
    console.log(word);
Главное
  • let name = value; объявляет переменную, которая может меняться.
  • const name = value; объявляет переменную, которой нельзя присвоить новое значение.
  • = значит «сохрани», а не «равно».
  • x = x + 1 читает x, прибавляет 1 и сохраняет результат обратно.
  • Имена: буквы, цифры, _ и $, без цифры в начале, с различением регистра, в стиле camelCase.
Источники курса (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Проверено: 2026-10-17