JavaRush /Курсы /Модуль 1: Web Core /Вложенные if-else и цепочка else if в JavaScript

Вложенные if-else и цепочка else if в JavaScript

Модуль 1: Web Core
20 уровень , 6 лекция
Открыта

1. Вложенные if-else: когда и зачем

Обычный if-else хорош, когда у нас два варианта: например, пользователь ввёл пароль — либо он верный, либо нет. Но что если вариантов больше? Например, программа должна реагировать на оценку пользователя: 5 — «отлично», 4 — «хорошо», 3 — «удовлетворительно», 2 — «плохо», 1 — «очень плохо». Или, скажем, вы хотите определить время суток по числу часов: если меньше 6 — ночь, от 6 до 12 — утро, от 12 до 18 — день, и т.д.

Для таких случаев нам нужно научиться делать не просто «развилку», а целую «развязку» — с множеством ответвлений. Это делается с помощью вложенных условий и цепочек else if.

Вложенные if-else — это когда внутри одного условия мы пишем ещё одно, а иногда и не одно. То есть, прямо в теле блока if или else мы снова используем условный оператор.

Пример 1: Проверка возраста и пола

Допустим, мы делаем сайт знакомств и хотим поприветствовать пользователя по-разному в зависимости от возраста и пола:

let age = 25;
let gender = "female";

if (age >= 18) {
    // Вложенное условие!
    if (gender === "male") {
        console.log("Здравствуйте, уважаемый мужчина!");
    } else {
        console.log("Здравствуйте, уважаемая женщина!");
    }
} else {
    console.log("Извините, вам нет 18 лет.");
}

Что тут происходит?
— Сначала проверяем, есть ли 18 лет.
— Если да, то внутри этого блока снова спрашиваем: мужчина или женщина?
— Если нет — сразу сообщаем, что доступа нет.

Пример 2: Игра «угадай число»

Вспомним простую игру: пользователь вводит число, а программа говорит, больше оно загаданного, меньше или равно.

let secret = 7;
let guess = 5;

if (guess === secret) {
    console.log("Угадал!");
} else {
    if (guess < secret) {
        console.log("Слишком мало!");
    } else {
        console.log("Слишком много!");
    }
}

Обратите внимание:
Вложенные условия можно делать сколько угодно раз, но если их становится много — код начинает напоминать слоёный пирог, который сложно есть (и читать).

2. else if: цепочка условий

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

Синтаксис

if (условие1) {
    // блок 1
} else if (условие2) {
    // блок 2
} else if (условие3) {
    // блок 3
} else {
    // блок по умолчанию
}

Как работает:
— Проверяется первое условие. Если оно true — выполняется соответствующий блок и всё, остальные не проверяются.
— Если первое условие false — проверяется второе, и так далее.
— Если ни одно условие не сработало — выполняется else (если он есть).

Пример 3: Оценки в школе

Давайте напишем программу, которая по числовой оценке выводит текст:

let mark = 4;

if (mark === 5) {
    console.log("Отлично!");
} else if (mark === 4) {
    console.log("Хорошо!");
} else if (mark === 3) {
    console.log("Удовлетворительно.");
} else if (mark === 2) {
    console.log("Плохо.");
} else if (mark === 1) {
    console.log("Очень плохо!");
} else {
    console.log("Некорректная оценка.");
}

Преимущество:
Код читается сверху вниз, нет лишних вложенных скобок. Если оценка — 4, программа сразу находит нужный блок и выводит «Хорошо!».

3. Полезные нюансы

Вложенные условия против else if: что выбрать?

Вложенные if-else полезны, когда одно условие зависит от другого. Например, если сначала нужно проверить возраст, а только потом — пол, как в примере выше.
Цепочка else if хороша, когда условия равноправные: например, оценка может быть 1, 2, 3, 4 или 5 — и нужно выбрать только один вариант.

Аналогия:
Вложенные условия — как русские матрёшки: одна внутри другой.
Цепочка else if — как очередь: идёшь по списку, пока не найдёшь подходящий вариант.

Как работает цепочка else if: важные детали

  • Как только одно из условий оказалось истинным (true), остальные даже не проверяются.
  • Если ни одно условие не подошло — выполняется else (если он есть).
  • Можно делать цепочку любой длины, но если вариантов слишком много — стоит подумать о других конструкциях (например, switch, но о нём позже).

Вложенные условия в реальной жизни

Иногда условия зависят друг от друга. Например, если пользователь совершеннолетний, мы спрашиваем его, пьёт ли он кофе. Если несовершеннолетний — спрашивать не будем.

let age = 19;
let likesCoffee = true;

if (age >= 18) {
    if (likesCoffee) {
        console.log("Вам можно кофе!");
    } else {
        console.log("Попробуйте чай.");
    }
} else {
    console.log("Кофе пока рано, попробуйте сок!");
}

Заметка:
Вложенность не должна быть слишком глубокой — иначе код становится нечитаемым. Если вдруг у вас получается «лес» из вложенных условий — попробуйте переписать с помощью цепочки else if или даже вынести часть логики в отдельные функции.

Группировка условий: логические операторы внутри if

Часто можно упростить вложенные условия, объединив их с помощью логических операторов (&&, ||).

До:

if (age >= 18) {
    if (age < 65) {
        console.log("Рабочий возраст");
    }
}

После:

if (age >= 18 && age < 65) {
    console.log("Рабочий возраст");
}

Меньше вложенности — легче читать!

4. Типичные ошибки при работе с вложенными if-else и else if

Ошибка №1: Пропущенные фигурные скобки
Если вы забыли фигурные скобки, то if или else применится только к первой строке после него. Остальной код будет выполняться всегда. Это частая причина неожиданных результатов!

if (age >= 18)
    console.log("Вам есть 18!");
    console.log("Добро пожаловать!"); // Эта строка выполнится всегда!

Ошибка №2: Лишние или перепутанные условия
Иногда условия перекрывают друг друга или их порядок нарушен. Например, если поставить else if (x > 0) перед else if (x > 10), условие x > 10 никогда не выполнится, потому что x > 10 уже подходит под x > 0.

Ошибка №3: Сравнение строк с числами
Если пользователь ввёл число как строку (например, из prompt), сравнение if (input > 10) может работать не так, как вы ожидаете. Лучше явно преобразовать тип.

Ошибка №4: Вложенность ради вложенности
Если у вас больше двух уровней вложенности — скорее всего, код можно упростить с помощью цепочки else if или логических операторов.

Ошибка №5: Несоответствие else
Иногда бывает сложно понять, к какому if относится тот или иной else, особенно без скобок! Всегда используйте фигурные скобки для ясности.

1
Задача
Модуль 1: Web Core, 20 уровень, 6 лекция
Недоступна
Наследование с super
Наследование с super
1
Задача
Модуль 1: Web Core, 20 уровень, 6 лекция
Недоступна
Метод hunt в Predator
Метод hunt в Predator
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ