- Главная
- Javascript
- Переменные в JavaScript: полное руководство для начинающих
Переменные в JavaScript: полное руководство для начинающих
Если представить программу как живой организм, то переменные в JavaScript — это его клетки. Это базовые ячейки памяти, которые умеют хранить, сохранять и изменять информацию прямо во время работы программы. Благодаря им страница может запомнить имя пользователя, подсчитать сумму заказа или плавно сменить оформление — без переменных веб остался бы набором статичных документов.
В этом руководстве мы последовательно разберём всю механику работы с переменными: от правил их создания и именования до тонкостей обработки разных типов данных. Это знание станет вашим фундаментом для написания осмысленного, управляемого и эффективного кода на JavaScript.
Объявление переменных
let, const и var (устаревший). Каждое из них задаёт особые правила: определяет, можно ли будет переназначить значение, и устанавливает границы, внутри которых эта переменная будет «видна» остальному коду.let— объявляет переменную, значение которой можно изменить (переприсвоить). Она имеет блочную область видимости, то есть существует только внутри блока{}, где была объявлена.const— объявляет константу, то есть переменную, чье значение нельзя переприсвоить после инициализации. Также имеет блочную область видимости. Попытка изменить значение приведет к ошибке.var— устаревший способ объявления с функциональной или глобальной областью видимости. Его использование в современном коде не рекомендуется.
Используйте const по умолчанию, и только если значение должно меняться, переходите на let.
Пример 1
// Объявление переменной, которая может меняться
let users = 10;
users = 11; // ✅ Корректно
// Объявление константы
const NDS_RATE = 0.20;
// NDS_RATE = 0.18; // ❌ Ошибка! TypeError
// Устаревший вариант (не рекомендуется)
var oldMeaning = "не используйте var";
Правила именования переменных
Основные правила и соглашения
- Имена могут содержать буквы, цифры, символы
$и_. - Первый символ не может быть цифрой.
- Регистр букв имеет значение:
myVarиmyvar— разные переменные. - Нельзя использовать зарезервированные слова языка (например,
let,if,return).
Рекомендуемые соглашения (стиль camelCase)
- Используйте осмысленные имена (
userName,cartTotal), а не абстрактные (a,x1). - Для имен, состоящих из нескольких слов, применяйте верблюжий регистр (camelCase): первое слово с маленькой буквы, каждое последующее — с большой.
- Константы, значения которых известны до выполнения кода, часто именуют в верхнем регистре с подчеркиваниями.
Пример 2
// ❌ Плохие имена
let a = 5;
let n = "Иван";
// ✅ Хорошие, понятные имена
let userAge = 30;
let fullName = "Иван Петров";
const maxScore = 100;
Типы данных: что можно хранить в переменных
JavaScript — язык с динамической типизацией. Это означает, что тип данных переменной определяется автоматически в зависимости от хранимого в ней значения. Все типы делятся на примитивные (хранят одно значение) и объектные (более сложные структуры).
Основные примитивные типы данных
| Тип | Описание | Пример |
|---|---|---|
| String | Текстовая строка. | let greeting = "Добрый день!"; |
| Number | Число (целое или с плавающей точкой). | let price = 99.95; |
| BigInt | Большие целые числа. | let bigId = 9007199254740991n; |
| Boolean | Логическое значение true/false. | let isPaid = true; |
| Undefined | Значение не присвоено. | let result; // undefined |
| Null | Преднамеренное «ничего» или «пусто». | let isActive = null; |
| Symbol | Уникальный идентификатор. | let id = Symbol("id"); |
Особый случай — typeof null возвращает object. Это известная историческая ошибка языка, которую учитывают при разработке.
Пример 3
// Примеры различных типов
let project = "Веб-сайт"; // String
let budget = 150000; // Number
let isClosed = false; // Boolean
let details = null; // Null (значение установлено явно)
let deadlines; // Undefined (значение не задано)
console.log(typeof project); // "string"
console.log(typeof budget); // "number"
console.log(typeof details); // "object" (особенность языка!)
Если значение переменной ведёт себя неожиданно, первым делом проверьте её тип с помощью console.log(typeof переменная). Часто ошибки возникают не из-за неверной логики, а из-за неявного преобразования типов — когда, например, вы пытаетесь сложить строку "10" и число 5, получая "105" вместо 15. Эта простая проверка за секунды выявляет корень проблемы и экономит часы отладки.
Работа с типами: проверка и преобразование
Определение типа
Оператор typeof возвращает строку с названием типа операнда.
Пример 4
let clients = 42;
let message = "42";
let isActive = true;
console.log(typeof clients); // "number"
console.log(typeof message); // "string"
console.log(typeof isActive); // "boolean"
console.log(typeof someVar); // "undefined"
Явное преобразование типов
Иногда нужно гарантированно получить значение определенного типа.
Пример 5
let userInput = "123"; // Это строка
// В число
let num = Number(userInput);
console.log(num); // 123 (число)
console.log(typeof num); // "number"
// В строку
let str = String(456);
console.log(str); // "456" (строка)
// В логическое значение
let bool = Boolean(1); // true
let bool2 = Boolean(0); // false
let bool3 = Boolean("Текст"); // true
let bool4 = Boolean(""); // false
Важно помнить про особенности: Number("Привет") даст NaN (Not-a-Number), Boolean("false") даст true, а Number(null) даст 0.
Оживи свой сайт. Освой JavaScript!
Статичная верстка — это только скелет. Наш онлайн-курс "JavaScript с нуля до профи" даст твоим страницам мышцы и нервы. Научись создавать слайдеры, формы, интерактивные карты и получать данные с сервера.
От теории — к реальным скриптам в твоём портфолио.
Операторы: действия с переменными
Арифметические операторы
Используются для математических действий:
+Сложение (или конкатенация строк)-Вычитание*Умножение/Деление%Остаток от деления (модуль)**Возведение в степень++Инкремент (увеличение на 1)--Декремент (уменьшение на 1)
Пример 6
let a = 15;
let b = 4;
console.log(a + b); // 19
console.log(a - b); // 11
console.log(a * b); // 60
console.log(a / b); // 3.75
console.log(a % b); // 3 (остаток от деления)
console.log(a ** 2); // 225 (15 в квадрате)
let counter = 5;
counter++; // Увеличивает счетчик на 1 ПОСЛЕ использования
console.log(counter); // 6
let newCounter = ++counter; // Увеличивает ДО использования
console.log(newCounter); // 7
Операторы сравнения
Возвращают логическое значение (true/false):
==Равно (нестрогое, с приведением типа)===Равно (строгое, по значению И типу) ← Рекомендуется!=Не равно (нестрогое)!==Не равно (строгое) ← Рекомендуется>Больше,<Меньше>=Больше или равно,<=Меньше или равно
Пример 7
let x = 5;
let y = "5";
console.log(x == y); // true (значения одинаковы после приведения)
console.log(x === y); // false (типы разные: number vs string)
console.log(x !== y); // true (строгое "не равно" — типы разные)
console.log(x > 3); // true
Логические операторы
Работают с булевыми значениями:
&&И (true, если оба операндаtrue)||ИЛИ (true, если хотя бы один операндtrue)!НЕ (инвертирует значение)
Пример 8
let isLogin = true;
let isPassword = false;
console.log(isLogin && isPassword); // false (требуются оба)
console.log(isLogin || isPassword); // true (достаточно одного)
console.log(!isPassword); // true (инверсия false)
Чтобы избежать головной боли со сравнениями, используйте простое мнемоническое правило: «Три — значит истина». Всегда выбирайте операторы с тремя символами (===, !==). Они работают строго и предсказуемо, проверяя и значение, и тип данных. Это избавит вас от ситуаций, когда 0 == false или "" == null возвращают true, что часто ломает логику программы. Строгое равенство — признак аккуратного и профессионального кода.
Практика: конвертер долларов в рубли
Задача
Создайте переменную, содержащую значение в долларах США, конвертируйте её в рубли и выведите результат в консоль в следующем формате:
Сумма в 100 долларов равна 7500 рублей
Для справки: 1 доллар США равен 75 рублям (курс условный).
Решение
// Конвертер долларов в рубли
const dollars = 100;
const exchangeRate = 75; // курс доллара к рублю
const rubles = dollars * exchangeRate;
// Вывод результата
console.log(`Сумма в ${dollars} долларов равна ${rubles} рублей`);
Часто задаваемые вопросы о JS переменных
В чем главная разница между let и const?
let и const?Ключевое различие — возможность переприсваивания значения. Переменную, объявленную через let, можно изменять сколько угодно раз. Переменная, объявленная через const, должна получить значение при создании, и это значение уже нельзя изменить. При этом важно помнить, что const защищает от изменения именно саму переменную, а не содержимое объекта или массива, на которое она может ссылаться.
Почему var считается устаревшим и не рекомендуется?
var считается устаревшим и не рекомендуется?Ключевое слово var имеет функциональную область видимости и не имеет блочной, что часто ведет к неочевидным ошибкам и «всплытию» переменных. Это усложняет предсказуемость кода и его поддержку. Современные let и const, имеющие блочную область видимости, делают поведение программы более интуитивным и контролируемым, поэтому они полностью вытеснили var в новой разработке.
Что лучше использовать: двойное (==) или тройное (===) равенство?
==) или тройное (===) равенство?Практически всегда используйте строгое равенство (===). Оно проверяет и значение, и тип данных, что исключает неожиданные результаты из-за неявного преобразования типов. Нестрогое равенство (==) может привести к ситуациям, когда 0 == false или "" == false возвращают true, что является частым источником ошибок для новичков.
Почему typeof null возвращает "object"?
typeof null возвращает "object"?Это известная историческая ошибка (баг) в языке JavaScript, сохраненная для обратной совместимости. На самом деле, null — это примитивный тип, но из-за особенностей внутреннего представления данных в ранних версиях языка оператор typeof выдает ошибочный результат. Для точной проверки на null используйте строгое сравнение: переменная === null.
Можно ли изменить константу, если она хранит массив или объект?
Да, можно изменять содержимое (например, добавлять элементы в массив или менять свойства объекта). const защищает от переприсваивания самой переменной, то есть вы не сможете сделать const massiv = []; massiv = [1,2,3]. Однако вы спокойно можете выполнить massiv.push(1), так как изменяется не ссылка переменной, а внутренняя структура данных, на которую она указывает.
Как правильно называть переменные на русском языке?
Технически JavaScript позволяет использовать Unicode, включая кириллицу. Однако общепринятой практикой в профессиональной среде является именование переменных на английском языке. Это делает код универсальным для разработчиков из любой страны, упрощает поиск ошибок и интеграцию с библиотеками. Если вы только учитесь, можно начать с русских имен для ясности, но для реальных проектов стоит сразу привыкать к английским названиям.
Заключение
Вы начинаете знакомиться с основами JavaScript — инструмента, который оживляет веб. Чтобы перейти от теории к созданию реальных проектов, приглашаем на онлайн-курс «Обучение JavaScript с нуля до профи». Это структурированный путь от основ до продвитутого уровня с практическими задачами и поддержкой.
Если же вам нужен готовый результат — профессиональный сайт для бизнеса — наша веб-студия реализует ваш проект под ключ: от дизайна до сложной логики.🎯
Выберите свой формат: стать разработчиком или получить готовый digital-инструмент. Свяжитесь с нами для консультации.