1. Основы JavaScript
Основы JavaScript: переменные, типы данных и базовые конструкции
JavaScript — это язык программирования, который оживляет веб-страницы. Если HTML создает структуру, а CSS отвечает за внешний вид, то JavaScript добавляет интерактивность. Именно благодаря ему работают выпадающие меню, слайдеры, валидация форм и динамическое обновление данных без перезагрузки страницы.
> JavaScript — это двигатель современного веба, превращающий статичные документы в полноценные приложения.
Хранение информации: переменные
Для работы с данными их нужно где-то хранить. В программировании для этого используются переменные — именованные контейнеры для информации. В современном стандарте языка для их создания применяются два ключевых слова: let и const.
* let используется для значений, которые могут измениться в будущем.
* const применяется для постоянных значений, которые остаются неизменными.
Представьте переменную как коробку с ярлыком. Вы можете положить туда число 1000. Если это коробка let, завтра вы сможете заменить 1000 на 1500. Если это сейф const, положенное значение останется там навсегда. Например, при расчете стоимости корзины в интернет-магазине базовая цена товара может быть константой (1000 руб.), а итоговая сумма с учетом скидок — изменяемой переменной (850 руб.).
Типы данных
JavaScript умеет работать с разной информацией: текстом, числами, логическими значениями. Все они делятся на типы данных.
| Тип данных | Название в коде | Описание и пример |
| :--- | :--- | :--- |
| Число | Number | Целые числа и дроби: 42, 3.14 |
| Строка | String | Текст, заключенный в кавычки: "Привет", 'User' |
| Логический | Boolean | Истина или ложь: true, false |
| Пустота | Null | Явное указание на отсутствие значения: null |
| Неопределенный | Undefined | Переменная создана, но значение не присвоено: undefined |
Понимание типов критически важно для правильных вычислений. Если попытаться сложить число и строку, язык выполнит склеивание (конкатенацию), а не математическое сложение.
Если товар стоит 500 руб., а доставка 200 руб., ошибка в типах данных приведет к тому, что пользователю выставится счет на 500200 руб. Поэтому данные, приходящие из полей ввода на веб-странице (которые всегда являются строками), необходимо принудительно преобразовывать в числа перед математическими операциями.
Сложные структуры: массивы и объекты
Базовых типов данных часто не хватает для описания реальных сущностей. Если нужно сохранить список покупок или данные профиля пользователя, применяются сложные структуры: массивы (arrays) и объекты (objects).
Массив — это упорядоченный список значений. Элементы в нем нумеруются начиная с нуля.
Объект — это набор свойств, где каждое свойство имеет имя (ключ) и значение. Это идеально подходит для описания конкретных предметов.
Если у нас есть 100 пользователей, мы не создаем 300 отдельных переменных для их имен, возрастов и статусов. Мы создаем массив, внутри которого хранится 100 объектов. Это позволяет легко фильтровать данные — например, найти всех пользователей, у которых возраст строго больше двадцати (, где — возраст пользователя) и статус Premium активен.
Условия и логика принятия решений
Программы редко выполняются строго по прямой. Чаще всего им нужно принимать решения в зависимости от ситуации. Для этого используются условные конструкции. Основной инструмент здесь — оператор if...else.
Математические сравнения в коде работают по строгим правилам. Например, проверка возраста пользователя для доступа к контенту записывается с использованием операторов сравнения: , где — текущий возраст. Если значение переменной больше или равно 18, условие выполняется.
В логических операциях часто применяются строгие (, ) и нестрогие (, ) неравенства, а также проверка на равенство (где — сравниваемые переменные). В JavaScript для проверки равенства рекомендуется использовать тройное равно ===, которое проверяет не только значение, но и тип данных.
Комбинирование условий: логические операторы
Часто для принятия решения нужно проверить сразу несколько условий. Для этого применяются логические операторы: И (AND), ИЛИ (OR), НЕ (NOT).
* Оператор && (И) возвращает истину, только если оба условия верны.
* Оператор || (ИЛИ) возвращает истину, если хотя бы одно из условий верно.
* Оператор ! (НЕ) меняет значение на противоположное.
Представим систему выдачи кредитов на сайте банка. Кредит одобряется, если доход клиента больше 50 000 руб. И его кредитная история положительна.
В данном случае, при доходе в 60 000 руб. первое условие (, где — доход) выполняется. Второе условие также истинно. Следовательно, весь блок логики срабатывает, и клиент получает одобрение. Если бы доход составлял 40 000 руб., оператор && моментально бы остановил проверку, так как первое условие оказалось ложным.
Многократное выполнение: циклы
Когда нужно выполнить одно и то же действие несколько раз, используются циклы. Они избавляют разработчика от необходимости копировать код. Самый распространенный цикл — for.
Цикл состоит из трех частей: начала отсчета, условия продолжения и шага изменения.
Если в интернет-магазине пользователь нажимает кнопку "Купить 5 одинаковых товаров", программа не пишет пять отдельных команд добавления. Она запускает цикл, который отрабатывает ровно 5 раз. При цене товара в 300 руб., на каждой итерации цикла общая сумма будет увеличиваться: 300, 600, 900, 1200, 1500 руб.
Функции: переиспользуемые блоки кода
По мере роста программы код становится сложнее. Чтобы не писать одни и те же инструкции в разных местах, их объединяют в функции. Это блоки кода, которые можно вызывать по имени в любой момент.
> Функция — это мини-программа внутри вашей основной программы, которая принимает входные данные, обрабатывает их и возвращает результат.
Функции позволяют сделать код модульным и читаемым. Современный синтаксис предлагает несколько способов их создания, включая классические объявления и стрелочные функции (arrow functions).
В этом примере функция принимает два параметра: цену и процент скидки. Если базовая цена равна 1000 руб., а скидка составляет 20%, функция вычисляет размер скидки (200 руб.) и возвращает итоговую стоимость — 800 руб. Эту функцию можно вызывать сотни раз для разных товаров, передавая разные числа, что делает разработку интерфейсов интернет-магазинов быстрой и надежной.