Основы JavaScript
Основы JavaScript: переменные, типы данных и базовые конструкции
JavaScript — это язык программирования, который оживляет веб-страницы. Если HTML создает структуру, а CSS отвечает за внешний вид, то JavaScript добавляет интерактивность. Именно благодаря ему работают выпадающие меню, слайдеры, валидация форм и динамическое обновление данных без перезагрузки страницы.
JavaScript — это двигатель современного веба, превращающий статичные документы в полноценные приложения.
Хранение информации: переменные
Для работы с данными их нужно где-то хранить. В программировании для этого используются переменные — именованные контейнеры для информации. В современном стандарте языка для их создания применяются два ключевых слова: let и const.
letиспользуется для значений, которые могут измениться в будущем.constприменяется для постоянных значений, которые остаются неизменными.
let userAge = 25;
userAge = 26; // Значение успешно обновлено
const maxSpeed = 120;
// maxSpeed = 130; // Вызовет ошибку, так как это константа
Представьте переменную как коробку с ярлыком. Вы можете положить туда число 1000. Если это коробка let, завтра вы сможете заменить 1000 на 1500. Если это сейф const, положенное значение останется там навсегда. Например, при расчете стоимости корзины в интернет-магазине базовая цена товара может быть константой (1000 руб.), а итоговая сумма с учетом скидок — изменяемой переменной (850 руб.).
Типы данных
JavaScript умеет работать с разной информацией: текстом, числами, логическими значениями. Все они делятся на типы данных.
| Тип данных | Название в коде | Описание и пример |
|---|---|---|
| Число | Number | Целые числа и дроби: 42, 3.14 |
| Строка | String | Текст, заключенный в кавычки: "Привет", 'User' |
| Логический | Boolean | Истина или ложь: true, false |
| Пустота | Null | Явное указание на отсутствие значения: null |
| Неопределенный | Undefined | Переменная создана, но значение не присвоено: undefined |
Понимание типов критически важно для правильных вычислений. Если попытаться сложить число и строку, язык выполнит склеивание (конкатенацию), а не математическое сложение.
let price = 500;
let delivery = "200";
let total = price + delivery; // Результат будет "500200", а не 700
Если товар стоит 500 руб., а доставка 200 руб., ошибка в типах данных приведет к тому, что пользователю выставится счет на 500200 руб. Поэтому данные, приходящие из полей ввода на веб-странице (которые всегда являются строками), необходимо принудительно преобразовывать в числа перед математическими операциями.
Сложные структуры: массивы и объекты
Базовых типов данных часто не хватает для описания реальных сущностей. Если нужно сохранить список покупок или данные профиля пользователя, применяются сложные структуры: массивы (arrays) и объекты (objects).
Массив — это упорядоченный список значений. Элементы в нем нумеруются начиная с нуля.
let shoppingCart = ["Ноутбук", "Мышь", "Клавиатура"];
console.log(shoppingCart[0]); // Выведет "Ноутбук"
Объект — это набор свойств, где каждое свойство имеет имя (ключ) и значение. Это идеально подходит для описания конкретных предметов.
let userProfile = {
name: "Иван",
age: 28,
isPremium: true
};
Если у нас есть 100 пользователей, мы не создаем 300 отдельных переменных для их имен, возрастов и статусов. Мы создаем массив, внутри которого хранится 100 объектов. Это позволяет легко фильтровать данные — например, найти всех пользователей, у которых возраст строго больше двадцати (, где — возраст пользователя) и статус Premium активен.
Условия и логика принятия решений
Программы редко выполняются строго по прямой. Чаще всего им нужно принимать решения в зависимости от ситуации. Для этого используются условные конструкции. Основной инструмент здесь — оператор if...else.
Математические сравнения в коде работают по строгим правилам. Например, проверка возраста пользователя для доступа к контенту записывается с использованием операторов сравнения: , где — текущий возраст. Если значение переменной больше или равно 18, условие выполняется.
let userAge = 20;
if (userAge >= 18) {
console.log("Доступ разрешен");
} else {
console.log("Доступ запрещен");
}
В логических операциях часто применяются строгие (, ) и нестрогие (, ) неравенства, а также проверка на равенство (где — сравниваемые переменные). В JavaScript для проверки равенства рекомендуется использовать тройное равно ===, которое проверяет не только значение, но и тип данных.
Комбинирование условий: логические операторы
Часто для принятия решения нужно проверить сразу несколько условий. Для этого применяются логические операторы: И (AND), ИЛИ (OR), НЕ (NOT).
- Оператор
&&(И) возвращает истину, только если оба условия верны. - Оператор
||(ИЛИ) возвращает истину, если хотя бы одно из условий верно. - Оператор
!(НЕ) меняет значение на противоположное.
Представим систему выдачи кредитов на сайте банка. Кредит одобряется, если доход клиента больше 50 000 руб. И его кредитная история положительна.
let income = 60000;
let goodHistory = true;
if (income > 50000 && goodHistory === true) {
console.log("Кредит одобрен");
}
В данном случае, при доходе в 60 000 руб. первое условие (, где — доход) выполняется. Второе условие также истинно. Следовательно, весь блок логики срабатывает, и клиент получает одобрение. Если бы доход составлял 40 000 руб., оператор && моментально бы остановил проверку, так как первое условие оказалось ложным.
Многократное выполнение: циклы
Когда нужно выполнить одно и то же действие несколько раз, используются циклы. Они избавляют разработчика от необходимости копировать код. Самый распространенный цикл — for.
Цикл состоит из трех частей: начала отсчета, условия продолжения и шага изменения.
- Задается начальное значение счетчика (например, 0).
- Проверяется условие (например, счетчик меньше 5: , где — переменная-счетчик).
- Выполняется код внутри цикла.
- Счетчик увеличивается на заданный шаг.
for (let i = 0; i < 3; i++) {
console.log("Товар добавлен в корзину. Номер: " + i);
}
Если в интернет-магазине пользователь нажимает кнопку "Купить 5 одинаковых товаров", программа не пишет пять отдельных команд добавления. Она запускает цикл, который отрабатывает ровно 5 раз. При цене товара в 300 руб., на каждой итерации цикла общая сумма будет увеличиваться: 300, 600, 900, 1200, 1500 руб.
Функции: переиспользуемые блоки кода
По мере роста программы код становится сложнее. Чтобы не писать одни и те же инструкции в разных местах, их объединяют в функции. Это блоки кода, которые можно вызывать по имени в любой момент.
Функция — это мини-программа внутри вашей основной программы, которая принимает входные данные, обрабатывает их и возвращает результат.
Функции позволяют сделать код модульным и читаемым. Современный синтаксис предлагает несколько способов их создания, включая классические объявления и стрелочные функции (arrow functions).
// Классическая функция
function calculateDiscount(price, discountPercent) {
let discountAmount = (price * discountPercent) / 100;
return price - discountAmount;
}
let finalPrice = calculateDiscount(1000, 20); // Вернет 800
В этом примере функция принимает два параметра: цену и процент скидки. Если базовая цена равна 1000 руб., а скидка составляет 20%, функция вычисляет размер скидки (200 руб.) и возвращает итоговую стоимость — 800 руб. Эту функцию можно вызывать сотни раз для разных товаров, передавая разные числа, что делает разработку интерфейсов интернет-магазинов быстрой и надежной.