$ sudo teach IT
РАЗДЕЛ 3 · УРОК 2

Оператор if / else / else if

Теперь программа умеет сравнивать — и пора научить её принимать решения. Оператор if — это развилка на дороге: идём направо или налево? Разберём синтаксис, типичные ошибки и научимся писать настоящую логику.

⏱ ~25 минут 🎓 Для новичков ⚡ JavaScript

🤔 Зачем нужен if?

Представьте светофор. Он горит зелёным — машины едут. Горит красным — стоят. Это логика «если — то». В программировании ровно то же самое: если условие выполнено — делаем одно, иначе — другое.

Без if программа была бы как поезд на одном рельсе — всегда едет в одну сторону, не зависимо ни от чего. Сайт показывал бы одно и то же всем пользователям: и авторизованным, и нет. Магазин давал бы скидку всем подряд. Это, конечно, не работает в реальном мире.

💡 if — это «если» на русском. else — «иначе». else if — «а если…» Именно так мы думаем в жизни: если дождь — взять зонт, иначе — надеть очки.

📝 Синтаксис: if

Давайте разберём синтаксис по частям. Вот самая простая форма:

if (условие) {
  // этот код выполнится, если условие true
}

Разберём каждую часть:

if

Ключевое слово. Говорит JavaScript: «Сейчас будет условие».

(условие)

В скобках — любое выражение, которое приводится к true или false.

{ ... }

Фигурные скобки — блок кода. Всё внутри выполнится только если условие true.

let age = 20;

if (age >= 18) {
  console.log("Вы совершеннолетний!");
}
// Вывод: "Вы совершеннолетний!"

let temperature = 5;
if (temperature < 0) {
  console.log("Минусовая температура!");
}
// Ничего не выведется — условие false, блок пропускается

🔀 Ветвление: if...else

Часто нам нужно не просто «если условие», но и «что делать, если условие не выполнено». Для этого есть else — он задаёт запасной путь:

if (условие) {
  // выполнится если условие true
} else {
  // выполнится если условие false
}

Один из двух блоков выполнится всегда — либо if, либо else. Это взаимоисключающие варианты.

let age = 15;

if (age >= 18) {
  console.log("Добро пожаловать!");
} else {
  console.log("Вам нет 18 лет, вход запрещён.");
}
// Вывод: "Вам нет 18 лет, вход запрещён."

// Ещё пример: чётность числа
let number = 7;
if (number % 2 === 0) {
  console.log("Чётное");
} else {
  console.log("Нечётное");
}
// Вывод: "Нечётное"

💡 Напоминание: оператор % — это остаток от деления. 7 % 2 = 1 (от деления 7 на 2 остаток 1). Если остаток 0 — число чётное.

🔢 Много вариантов: else if

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

if (первое условие) {
  // если первое — true
} else if (второе условие) {
  // если первое — false, но второе — true
} else if (третье условие) {
  // если первые два — false, но третье — true
} else {
  // если все условия выше — false
}

Важно понимать: JavaScript проверяет условия сверху вниз. Как только находит первое true — выполняет его блок и прекращает проверку. Остальные блоки пропускаются.

let score = 75;

if (score >= 90) {
  console.log("Отлично! 🎉");
} else if (score >= 75) {
  console.log("Хорошо!");
} else if (score >= 60) {
  console.log("Удовлетворительно");
} else {
  console.log("Нужно ещё поработать");
}
// Вывод: "Хорошо!" — score >= 90 false, score >= 75 true → стоп

🎂 Практический пример: категория по возрасту

let age = 25;

if (age < 13) {
  console.log("Ребёнок");
} else if (age < 18) {
  console.log("Подросток");
} else if (age < 65) {
  console.log("Взрослый");
} else {
  console.log("Пожилой");
}
// Вывод: "Взрослый"

Обратите внимание: нам не нужно писать age >= 13 && age < 18 во втором условии. Если мы попали до else if (age < 18) — значит первое условие (age < 13) уже было false, то есть age >= 13 уже гарантировано. JavaScript проверил это за нас!

🧠 Truthy и Falsy: что считается «правдой»

В JavaScript любое значение можно использовать как условие в if — не обязательно писать явное сравнение. JavaScript автоматически преобразует значение к true или false.

Falsy-значения (считаются как false) — их всего 6:

false

само по себе

0

ноль

""

пустая строка

null

пусто

undefined

не задано

NaN

не число

Всё остальное — Truthy: любое ненулевое число, любая непустая строка, массив, объект, функция.

if ("Привет") {
  console.log("Строка непустая — truthy!");
}

if (0) {
  console.log("Этот код никогда не выполнится");
} else {
  console.log("0 — это falsy");
}

let userName = "";
if (userName) {
  console.log("Привет, " + userName);
} else {
  console.log("Вы не ввели имя!");
}
// Вывод: "Вы не ввели имя!" — пустая строка falsy

🐛 Типичные ошибки новичков

❌ Ошибка 1: = вместо ===

Это самая частая ошибка. Одно = — это присваивание, три === — сравнение. Если написать одно = в условии, JavaScript присвоит значение и проверит его как truthy/falsy.

let x = 5;

// НЕПРАВИЛЬНО — это присваивание, а не сравнение!
if (x = 10) {
  console.log("x равно 10");
}
// Этот код выполнится, потому что 10 — truthy,
// а x теперь равно 10 (переменная изменилась!) — БАГ

// ПРАВИЛЬНО
if (x === 10) {
  console.log("x равно 10");
}

❌ Ошибка 2: точка с запятой после if

Никогда не ставьте ; сразу после закрывающей скобки условия. Это создаст пустой if-блок, и следующий код выполнится всегда.

let age = 10;

// НЕПРАВИЛЬНО — точка с запятой создаёт пустой блок
if (age >= 18); {
  console.log("Совершеннолетний");  // выполнится ВСЕГДА!
}

// ПРАВИЛЬНО
if (age >= 18) {
  console.log("Совершеннолетний");
}

❌ Ошибка 3: перекрывающиеся условия в неправильном порядке

Если поставить менее строгое условие первым, оно «поглотит» все остальные случаи.

let score = 95;

// НЕПРАВИЛЬНО — первое условие поглотит всё
if (score >= 60) {
  console.log("Удовлетворительно");  // всегда сработает для 60+
} else if (score >= 75) {
  console.log("Хорошо");  // никогда не достигнется!
} else if (score >= 90) {
  console.log("Отлично");  // никогда не достигнется!
}

// ПРАВИЛЬНО — от строгого к менее строгому
if (score >= 90) {
  console.log("Отлично");
} else if (score >= 75) {
  console.log("Хорошо");
} else if (score >= 60) {
  console.log("Удовлетворительно");
}

🪆 Вложенные if

Внутри блока if можно писать другой if. Это называется вложенность. Используется, когда нужно проверить несколько независимых условий последовательно.

let age = 20;
let hasTicket = true;

if (age >= 18) {
  console.log("Возраст подходит");
  if (hasTicket) {
    console.log("Билет есть — входите!");
  } else {
    console.log("Нет билета — купите на входе");
  }
} else {
  console.log("Вам нет 18 лет — вход запрещён");
}
// Вывод:
// "Возраст подходит"
// "Билет есть — входите!"

⚠️ Совет: глубоко вложенные if (3+ уровней) трудно читать. Если видите глубокую вложенность — подумайте, можно ли объединить условия через && или || (следующий урок). Правило: чем меньше уровней вложенности — тем чище код.

✅ Итоги урока

  • if (условие) { ... } — выполняет блок, если условие true
  • else { ... } — запасной блок, если условие false
  • else if (условие) { ... } — дополнительное условие в цепочке
  • JavaScript проверяет условия сверху вниз и останавливается на первом true
  • В условии можно использовать любое выражение — оно приводится к true/false
  • Falsy: false, 0, "", null, undefined, NaN. Всё остальное — truthy
  • Частые ошибки: = вместо ===, ; после if(), неправильный порядок условий
  • Вложенные if — можно, но глубокую вложенность лучше избегать

В следующем уроке познакомимся с логическими операторами &&, || и ! — они позволяют объединять несколько условий в одно. 🚀

Тест: if / else / else if

6 вопросов

Категория возраста

Используя if/else if/else, создайте переменную category. Если age (возьмите age = 25) меньше 13 — "ребёнок", если меньше 18 — "подросток", если меньше 65 — "взрослый", иначе — "пожилой".

Чётное или нечётное

Возьмите число number = 7. Используя if/else, создайте переменную parity со значением "чётное" если number % 2 === 0, иначе "нечётное".