Условные конструкции: if...else, else if, тернарный оператор
Как JavaScript принимает решения? 🤔
Программы без условий — как робот без логики: выполняет команды, но не умеет адаптироваться. Давайте научим ваш код "думать"!
Условные конструкции — это развилки в коде. Они позволяют выполнять разные действия в зависимости от условий. Представьте, что вы пишете бота для погоды:
if (дождь) {
взятьЗонт();
} else {
надетьСолнцезащитныеОчки();
}
Базовый синтаксис if...else
Самый простой вариант — конструкция if:
if (условие) {
// код выполнится, если условие истинно (true)
}
Пример с реальными переменными:
const isRaining = true;
if (isRaining) {
console.log("Беру зонт ☔");
}
💡 Фишка: если в блоке только одна строка, фигурные скобки можно опустить. Но лучше так не делать — это снижает читаемость кода.
А если дождя нет? Добавляем else:
const isRaining = false;
if (isRaining) {
console.log("Беру зонт ☔");
} else {
console.log("Одеваю солнечные очки 😎");
}
Множественный выбор с else if
Когда вариантов больше двух, используем else if:
const temperature = 23;
if (temperature > 30) {
console.log("Жара! Включаю кондиционер");
} else if (temperature > 20) {
console.log("Идеальная погода для прогулки");
} else if (temperature > 0) {
console.log("Прохладно, лучше надеть куртку");
} else {
console.log("Мороз! Греемся дома с чаем");
}
🔍 Как это работает:
- Проверяется первое условие
- Если оно ложно — переходит к следующему
else if - Когда все условия ложны — выполняется
else(если он есть)
Тернарный оператор — краткая форма записи
Для простых условий можно использовать тернарный оператор:
условие ? выражениеЕслиTrue : выражениеЕслиFalse
Пример:
const age = 18;
const canDrink = age >= 18 ? "Можно 🍺" : "Нельзя 🚫";
console.log(canDrink); // "Можно 🍺"
⚠️ Важно: не злоупотребляйте тернарными операторами. Если логика сложная — лучше использовать
if...elseдля читаемости.
Продвинутые техники
Логические операторы в условиях
Можно комбинировать условия:
const isWeekend = true;
const hasMoney = false;
if (isWeekend && hasMoney) {
console.log("Идём в кино!");
} else if (isWeekend || hasMoney) {
console.log("Можно сходить на прогулку");
} else {
console.log("Сидим дома, смотрим YouTube");
}
Вложенные условия
Условия можно вкладывать друг в друга:
const isUserLoggedIn = true;
const userRole = "admin";
if (isUserLoggedIn) {
if (userRole === "admin") {
console.log("Показываем панель администратора");
} else {
console.log("Показываем обычный интерфейс");
}
} else {
console.log("Показываем форму входа");
}
Частые ошибки и как их избежать
-
Сравнение с одним
=:javascript if (x = 10) { ... } // Ошибка! Присваивание вместо сравненияВсегда используйте===для строгого сравнения. -
Лишние точки с запятой:
javascript if (condition); { // Ошибка! Блок выполнится всегда console.log("Oops!"); } -
Неявное преобразование типов:
javascript if ("false") { // Строка не пустая → true console.log("Сюрприз!"); }
Практика: мини-проект "Умный дом" 🏠
Давайте напишем логику для системы управления освещением:
const time = 21; // текущий час
const isMotionDetected = true;
const isLightsOn = false;
if (time > 22 || time < 6) {
if (isMotionDetected && !isLightsOn) {
console.log("Включить свет в коридоре 💡");
} else if (!isMotionDetected && isLightsOn) {
console.log("Выключить свет — никого нет");
} else {
console.log("Режим ожидания...");
}
} else {
console.log("Дневной режим — свет не нужен");
}
Когда что использовать? 🧐
| Ситуация | Лучший выбор |
|---|---|
| Простое условие | if |
| Два варианта | if...else |
| Много вариантов | if...else if...else |
| Краткая запись | Тернарный оператор |
| Комплексная логика | Вложенные условия |
Финал: проверь себя! 🔥
Попробуй предсказать, что выведет этот код:
const score = 85;
const hasCheated = false;
const result = !hasCheated && score >= 90
? "Отличник! 🎓"
: score >= 60
? "Сдал ✅"
: "Не сдал ❌";
console.log(result);
Ответ: "Сдал ✅". Почему? Потому что:
hasCheated—false, но!hasCheated—truescore >= 90—false, поэтому тернарный оператор переходит к следующей проверкеscore >= 60—true, поэтому результат "Сдал ✅"