Условные конструкции: 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("Мороз! Греемся дома с чаем");
}

🔍 Как это работает:

  1. Проверяется первое условие
  2. Если оно ложно — переходит к следующему else if
  3. Когда все условия ложны — выполняется 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("Показываем форму входа");
}

Частые ошибки и как их избежать

  1. Сравнение с одним =: javascript if (x = 10) { ... } // Ошибка! Присваивание вместо сравнения Всегда используйте === для строгого сравнения.

  2. Лишние точки с запятой: javascript if (condition); { // Ошибка! Блок выполнится всегда console.log("Oops!"); }

  3. Неявное преобразование типов: 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);

Ответ: "Сдал ✅". Почему? Потому что:

  1. hasCheatedfalse, но !hasCheatedtrue
  2. score >= 90false, поэтому тернарный оператор переходит к следующей проверке
  3. score >= 60true, поэтому результат "Сдал ✅"
Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие