Переменные: let, const и var
Переменные — это фундамент любой программы. Без них нельзя ничего запомнить, ничего сохранить и ничем управлять. Разберём, что это такое, зачем нужно и как правильно объявлять переменные в JavaScript.
📦 Что такое переменная?
Представьте, что вы переезжаете на новую квартиру. У вас куча вещей: книги, одежда, посуда. Чтобы не потерять ничего, вы складываете всё в подписанные коробки: «Книги», «Кухня», «Зима». Когда нужна книга — вы идёте к коробке с надписью «Книги» и достаёте её.
Переменная в программировании — это такая подписанная коробка в памяти компьютера. У каждой коробки есть название (имя переменной) и содержимое (значение). Компьютер умеет найти любую коробку по её имени, достать содержимое или положить туда что-то новое.
💡 Простыми словами: переменная — это именованное место в памяти компьютера, где хранится какое-то значение. Имя придумываете вы сами, значение — то, что вы в неё положили.
Зачем вообще нужны переменные? Посмотрите на реальные ситуации:
- Вы пишете игру — нужно запомнить счёт игрока, его уровень, оставшиеся жизни
- Вы делаете интернет-магазин — нужно хранить товары в корзине, итоговую сумму
- Вы пишете чат — нужно помнить, кто отправил сообщение и что именно
- Вы создаёте форму — нужно сохранить то, что ввёл пользователь, чтобы потом отправить на сервер
Без переменных программа не могла бы ничего запомнить — каждый раз всё начиналось бы с нуля. Переменные — это память вашей программы.
✏️ Способ первый: let
let — это основной и самый распространённый способ объявить переменную в современном JavaScript. Ключевое слово let говорит JavaScript: «создай мне коробку с таким именем».
let age = 25; // создали переменную age и положили в неё число 25
let name = "Алиса"; // создали переменную name со строкой "Алиса"
let isLoggedIn = true; // создали переменную isLoggedIn со значением true
console.log(age); // выведет: 25
console.log(name); // выведет: Алиса
Главная особенность let — переменную можно изменить после создания. Это как коробка, которую вы можете открыть и поменять содержимое:
let score = 0; // начальный счёт
console.log(score); // 0
score = 10; // игрок набрал очки — меняем значение
console.log(score); // 10
score = score + 5; // добавили ещё 5
console.log(score); // 15
Обратите внимание: при первом создании мы пишем let score = 0. При изменении — просто score = 10, без ключевого слова let. Слово let нужно только один раз — когда коробка создаётся впервые.
🔑 let — современный стандарт. Если вы не уверены, что использовать — берите let. Он подходит для большинства ситуаций, где значение переменной может меняться.
Также можно объявить переменную без немедленного присваивания значения — тогда она будет содержать специальное значение undefined (означает «пусто», «не задано»):
let userName; // создали, но не присвоили значение
console.log(userName); // undefined
userName = "Максим"; // теперь присвоили
console.log(userName); // Максим
🔒 Способ второй: const
const — от слова constant (константа, постоянная). Это переменная, которую нельзя переприсвоить после создания. Это как коробка, запаянная скотчем: можно посмотреть, что внутри, но нельзя положить туда что-то другое.
const PI = 3.14159; // математическая константа
const siteUrl = "sudoteach.com"; // адрес сайта
const MAX_USERS = 1000; // максимальное количество пользователей
console.log(PI); // 3.14159
console.log(siteUrl); // sudoteach.com
Если попытаться изменить const — JavaScript выбросит ошибку:
const PI = 3.14159;
PI = 3; // ❌ TypeError: Assignment to constant variable.
// Так нельзя! JavaScript не даст это сделать.
⚠️ Важно: const нельзя переприсвоить (нельзя написать myConst = что-то_другое), но если const хранит объект или массив — их содержимое можно менять. Это тонкость, которую мы разберём позже, когда доберёмся до объектов.
Когда использовать const? Везде, где значение не должно меняться: настройки, конфигурации, математические константы, URL-адреса, имена пользователей (в пределах одной функции), результаты вычислений, которые не нужно обновлять.
💡 Совет профи: в современном JavaScript принято использовать const по умолчанию, и переходить на let только тогда, когда точно знаете, что значение будет меняться. Это делает код более предсказуемым и защищает от случайных изменений.
Важно: const требует немедленного присваивания. Нельзя объявить const и потом что-то в неё положить — только сразу:
const greeting; // ❌ SyntaxError: Missing initializer in const declaration
const greeting = "Привет"; // ✅ Правильно — сразу с значением
🦕 Способ третий: var (устаревший)
var — это самый старый способ объявить переменную, существует с самого начала JavaScript (с 1995 года). Вы будете встречать его в старом коде, поэтому нужно знать, что это такое. Но самому писать var в новом коде — не стоит.
var oldVariable = "я из прошлого";
console.log(oldVariable); // я из прошлого
Почему var избегают? У него две серьёзные проблемы:
var «вытекает» за пределы блоков кода (фигурных скобок). let и const — нет. Это приводит к неожиданным багам, когда переменная видна там, где не должна.
JavaScript «поднимает» var-переменные в начало функции. Это значит, что переменную можно использовать до того, как вы её объявили — и это не ошибка, а undefined. Такое поведение очень запутывает.
// Пример hoisting с var (запутанное поведение):
console.log(x); // undefined — не ошибка! var "всплывает" наверх
var x = 5;
console.log(x); // 5
// С let — честное поведение:
console.log(y); // ReferenceError — переменная не существует, всё логично
let y = 5;
Пример с блочной областью видимости:
// var утекает из блока:
if (true) {
var leaky = "я var";
}
console.log(leaky); // "я var" — переменная видна снаружи блока! Это опасно.
// let остаётся внутри:
if (true) {
let safe = "я let";
}
console.log(safe); // ReferenceError — переменная не видна снаружи. Это правильно!
🚫 Правило: никогда не используйте var в новом коде. Используйте const по умолчанию, let — если значение будет меняться. var изучите только чтобы понимать старый код.
📊 Сравнение: let vs const vs var
| Свойство | let | const | var |
|---|---|---|---|
| Можно переприсвоить | ✅ Да | ❌ Нет | ✅ Да |
| Блочная область видимости | ✅ Да | ✅ Да | ❌ Нет |
| Hoisting | Нет (ошибка) | Нет (ошибка) | ⚠️ Да (undefined) |
| Нужно инициализировать сразу | ❌ Необязательно | ✅ Обязательно | ❌ Необязательно |
| Использовать? | ✅ Да | ✅ Да (предпочтительно) | 🚫 Нет |
📝 Правила именования переменных
Имя переменной — это как имя человека: должно быть понятным и однозначным. JavaScript разрешает многое, но есть жёсткие правила и негласные соглашения.
- Буквы, цифры, знак подчёркивания
_и знак доллара$ - Имя может начинаться с буквы,
_или$ - Регистр имеет значение:
nameиName— разные переменные - Любая длина имени
- Начинать с цифры:
1name— ошибка - Использовать пробелы:
my name— ошибка - Использовать зарезервированные слова:
let,const,return,functionи другие - Использовать спецсимволы:
@,#,-,!и т.д.
// ✅ Правильные имена:
let userName = "Иван";
let totalPrice = 1500;
let isActive = true;
let _privateVar = 42;
let $element = document.getElementById("app");
// ❌ Неправильные имена (вызовут ошибку):
let 1name = "плохо"; // начинается с цифры
let my name = "плохо"; // содержит пробел
let let = "плохо"; // зарезервированное слово
camelCase — стандарт JavaScript:
В JavaScript принято писать имена переменных в стиле camelCase (верблюжий регистр): первое слово с маленькой буквы, каждое следующее слово начинается с заглавной. Например: userName, totalOrderPrice, isUserLoggedIn, maxRetryCount. Имена должны быть говорящими — по имени переменной должно быть понятно, что в ней хранится.
// ❌ Плохо — непонятные имена:
let a = "Иван";
let x = 25;
let f = true;
// ✅ Хорошо — понятные имена:
let userName = "Иван";
let userAge = 25;
let isUserActive = true;
✅ Итоги урока
- Переменная — это именованное место в памяти компьютера для хранения значения
- const — константа, нельзя переприсвоить. Использовать по умолчанию
- let — изменяемая переменная. Использовать когда значение меняется
- var — устаревший способ, не имеет блочной области видимости, создаёт hoisting. Не использовать в новом коде
- Имена переменных: camelCase, нельзя начинать с цифры, нельзя использовать пробелы и зарезервированные слова
- Имя переменной должно чётко описывать, что в ней хранится
В следующем уроке разберём, какие типы данных бывают в JavaScript — числа, строки, булевы значения и другие. 🚀
Тест: Переменные в JavaScript
7 вопросов
Расчёт возраста
Счётчик
Создайте переменную counter со значением 10. Увеличьте её на 5, затем уменьшите на 3. Используйте сокращённые операторы (+=, -=).