Оператор if / else / else if
Теперь программа умеет сравнивать — и пора научить её принимать решения. Оператор if — это развилка на дороге: идём направо или налево? Разберём синтаксис, типичные ошибки и научимся писать настоящую логику.
🤔 Зачем нужен 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 (условие) { ... }— выполняет блок, если условиеtrueelse { ... }— запасной блок, если условиеfalseelse if (условие) { ... }— дополнительное условие в цепочке- JavaScript проверяет условия сверху вниз и останавливается на первом
true - В условии можно использовать любое выражение — оно приводится к
true/false - Falsy:
false,0,"",null,undefined,NaN. Всё остальное — truthy - Частые ошибки:
=вместо===,;послеif(), неправильный порядок условий - Вложенные
if— можно, но глубокую вложенность лучше избегать
В следующем уроке познакомимся с логическими операторами &&, || и ! — они позволяют объединять несколько условий в одно. 🚀
Тест: if / else / else if
6 вопросов