Хотите заказать веб-сайт? Связаться с нами

Условные операторы в JavaScript: if, switch, тернарный

В программировании часто встречаются задачи, требующие принятия решений в зависимости от конкретных условий. Именно для этого в JavaScript существуют условные операторы. Они позволяют направлять выполнение программы по разным путям, делая код динамичным и интеллектуальным. Условные операторы в JavaScript — это основа для создания логики любого приложения, от простой проверки данных до сложных бизнес-процессов. В этой статье подробно разберем все основные конструкции: if, else, else if, тернарный оператор и switch.

Условные операторы в JavaScript: if, switch, тернарный

Операторы if и else

Базовые условия: операторы if и else позволяют выполнять определенный блок кода только при истинности заданного выражения. Это фундаментальный принцип ветвления логики программы.

Синтаксис конструкции выглядит следующим образом:

Пример 1

if (условие) {
    // Код, выполняемый, если условие истинно (true)
} else {
    // Код, выполняемый, если условие ложно (false). Этот блок необязателен.
}

Работа оператора проста: выражение в круглых скобках вычисляется и преобразуется в логическое значение (Boolean). Если результат — true, выполняется блок кода после if. Если false и присутствует блок else — выполняется он.

Пример 2

Проверка возраста для доступа на сайт.

let userAge = 20;
let accessMessage;

if (userAge >= 18) {
    accessMessage = "Доступ разрешен. Добро пожаловать!";
} else {
    accessMessage = "Извините, доступ запрещен для лиц младше 18 лет.";
}
console.log(accessMessage);

Очень важно не путать оператор сравнения == или === с оператором присваивания =. Ошибка может привести к неожиданному поведению.

Пример 3

let isOnline = false;
// ОШИБКА: вместо проверки происходит присваивание значения true переменной
if (isOnline = true) {
    console.log("Пользователь онлайн");
}
// Всегда будет выводить "Пользователь онлайн", даже если isOnline изначально был false

Всегда используйте операторы сравнения для проверки условий.

else if и цепочки условий

Когда требуется проверить более двух возможных сценариев, на помощь приходит конструкция множественный выбор: else if. Она позволяет создавать цепочки условий, которые проверяются последовательно.

Цепочка else if проверяется сверху вниз. Как только находится первое истинное условие, выполняется соответствующий ему блок кода, а все последующие проверки игнорируются. Это делает код эффективнее нескольких отдельных операторов if.

Пример 4

Определение уровня скидки в магазине в зависимости от суммы покупки.

let cartTotal = 8500; // Сумма покупки
let discount = 0;

if (cartTotal >= 10000) {
    discount = 15;
    console.log(`Ваша скидка: ${discount}%`);
} else if (cartTotal >= 5000) {
    discount = 10;
    console.log(`Ваша скидка: ${discount}%`);
} else if (cartTotal >= 2000) {
    discount = 5;
    console.log(`Ваша скидка: ${discount}%`);
} else {
    console.log("Скидка не предоставляется. Добавьте товаров в корзину!");
}

Такой подход делает код чище и легче для восприятия, чем вложенные или отдельные блоки if.

Тернарный условный оператор

Сокращенная запись: тернарный оператор — это компактная альтернатива простому if...else. Он идеально подходит для коротких и простых условий, где нужно выбрать одно из двух значений.

Пример 5

Синтаксис тернарного оператора.

условие ? выражение_если_истина : выражение_если_ложь;

Его можно «прочитать» так: если условие верно, возвращается результат первого выражения, иначе — второго.

Пример 6

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

let isMember = true;
let shippingCost = isMember ? 0 : 10; // 0, если isMember = true, иначе 10
console.log(`Стоимость доставки: ${shippingCost} руб.`);

Тернарный оператор также можно использовать для выполнения действий:

Пример 7

let batteryLevel = 15;
batteryLevel <= 20
    ? console.log("Заряд батареи критически низкий!")
    : console.log("Уровень заряда в норме.");

Важно помнить: для сложных условий с множеством ветвлений лучше использовать if...else или switch, так как тернарный оператор может сильно снизить читаемость кода.

Оператор switch

Когда необходимо сравнить одну переменную с большим количеством конкретных значений, оператор switch становится гораздо более читаемой альтернативой длинным цепочкам if...else if.

Пример 8

Синтаксис оператора switch.

switch (выражение) {
    case значение1:
        // Код для значение1
        break;
    case значение2:
        // Код для значение2
        break;
    // ...
    default:
        // Код, если не подошло ни одно значение
}

Ключевое слово break в конце каждого блока case критически важно. Оно прерывает выполнение switch, не позволяя коду «провалиться» в следующий case. Если break отсутствует, выполнение продолжится со следующего case, что иногда используется намеренно для группировки действий.

Пример 9

Система статусов заказа.

let orderStatus = "shipped";

switch (orderStatus) {
    case "new":
        console.log("Заказ оформлен, ожидает обработки.");
        break;
    case "processing":
        console.log("Заказ собран и готовится к отправке.");
        break;
    case "shipped":
        console.log("Заказ передан в службу доставки.");
        break;
    case "delivered":
        console.log("Заказ доставлен получателю.");
        break;
    default:
        console.log("Статус заказа неизвестен.");
}
// Выведет: "Заказ передан в службу доставки."

Группировка case и блок default

Оператор switch позволяет группировать несколько case для выполнения одного блока кода, а также содержит специальный блок default.

  1. Группировка case: удобна, когда для разных значений нужно выполнить одинаковые действия.
  2. Блок default: выполняется, если ни один case не совпал. Это аналог блока else в конструкции if. Хотя его можно расположить в любом месте switch, рекомендуется ставить в конец для лучшей читаемости.

Пример 10

Работа с группировкой и default.

let userRole = "moderator";

switch (userRole) {
    case "admin":
        console.log("Полный доступ к админ-панели.");
        break;
    case "editor":
    case "moderator": // Группировка: для "editor" и "moderator" выполнится один код
        console.log("Доступ к редактированию контента.");
        break;
    case "user":
        console.log("Доступ к личному кабинету.");
        break;
    default:
        console.log("Роль не определена. Доступ запрещен.");
}
// Выведет: "Доступ к редактированию контента."
Из ноутбука появляются летающие светящиеся экраны

Оживи свой сайт. Освой JavaScript!

Статичная верстка — это только скелет. Наш онлайн-курс "JavaScript с нуля до профи" даст твоим страницам мышцы и нервы. Научись создавать слайдеры, формы, интерактивные карты и получать данные с сервера.

От теории — к реальным скриптам в твоём портфолио.

Подробнее о курсе

Часто задаваемые вопросы об условных операторах

Когда использовать if…else, а когда switch?

Используйте switch, когда вам нужно сравнить одну переменную или выражение с несколькими конкретными значениями (например, обработка статусов заказа, кодов ошибок, значений из меню). Конструкция if...else лучше подходит для проверки сложных логических условий, диапазонов (больше/меньше) или когда нужно оценить состояние нескольких разных переменных.

Обязательно ли ставить break в каждом case оператора switch?

Нет, не обязательно, но это критически важно для ожидаемого поведения. Если break отсутствует, выполнение кода «провалится» в следующий блок case и будет продолжаться до ближайшего break или конца оператора switch. Иногда это используют намеренно для группировки действий для нескольких значений, но в большинстве случаев break необходим.

В чем разница между одинарным (=) и двойным (==, ===) знаком в условии if?

Одинарный знак (=) — это оператор присваивания. Он заносит значение в переменную и возвращает его. В условии if это почти всегда ошибка. Двойные знаки — операторы сравнения: == (нестрогое равенство) и === (строгое равенство). Для проверки условий всегда используйте ===, который сравнивает и значение, и тип данных, избегая неявных преобразований.

Можно ли использовать тернарный оператор для вызова функций?

Да, тернарный оператор может возвращать любое значение, включая результат вызова функции. Например: isValid ? showSuccessMessage() : showError(). Однако для сложных действий, особенно с побочными эффектами, предпочтительнее использовать стандартный if...else для лучшей читаемости кода.

Что произойдет, если ни одно условие в if…else if не сработает и нет else?

Программа просто пропустит всю условную конструкцию и продолжит выполнение со следующей строки кода. Блок else является необязательным и служит для обработки всех остальных случаев, когда ни одно из предыдущих условий не оказалось истинным.

Как правильно форматировать вложенные условия для читаемости?

Основное правило — соблюдать отступы (например, 2 или 4 пробела) для каждого нового уровня вложенности. Используйте фигурные скобки {} даже для однострочных блоков — это предотвращает ошибки при расширении кода. Для очень сложных условий рассмотрите возможность вынесения логики в отдельную функцию или использование switch.

Можно ли в условии if проверять не Boolean значения?

Да, JavaScript автоматически преобразует любое значение в условии к логическому типу (Truthy/Falsy). Значения false, 0, "" (пустая строка), null, undefined и NaN считаются «ложными» (Falsy). Все остальные (непустая строка, любое число, кроме 0, массив, объект) — «истинными» (Truthy).

Заключение

Условные операторы — это мощный инструмент в арсенале JavaScript-разработчика. Правильное их использование делает код логичным, эффективным и простым в поддержке.

Готовы применять условные операторы на практике? Наш онлайн-курс «Обучение JavaScript с нуля до профи» поможет освоить язык системно — от основ до сложных тем. Для тех, кому нужен готовый результат, наша веб-студия создаст современный и эффективный сайт с продуманной логикой. Начните развиваться или получите готовое решение уже сегодня!

Теги: