StudyCode
К практике
НачальныйJavaScriptifelse
🔀JuniorJavaScriptifelseусловиятернарныйswitch

Условное ветвление: if и ?

if/else, тернарный оператор, switch — как принимать решения в коде.

JSУсловия: if / else / switch / тернарный оператор
Начало
условие?
true
блок true
false
блок else
Конец
if (условие) {
  // блок true
} else if (другое) {
  // ещё одно условие
} else {
  // блок false
}

switch — для нескольких значений одной переменной

switch (значение) {
  case "a": /* ... */ break;
  case "b": /* ... */ break;
  default:  /* ... */
}

Без break выполнение «провалится» в следующий case (fall-through).

Язык примеров:
Шаг 1 из 1Практика
1

if, else if, else

Синтаксис

javascript
if (условие) {
  // выполнится если условие truthy
} else if (другоеУсловие) {
  // иначе, если это условие truthy
} else {
  // во всех остальных случаях
}

Пример

javascript
const hour = new Date().getHours();

let greeting;
if (hour < 6) {
  greeting = "Ночь";
} else if (hour < 12) {
  greeting = "Доброе утро";
} else if (hour < 18) {
  greeting = "Добрый день";
} else {
  greeting = "Добрый вечер";
}

Скобки {} не обязательны для одной строки, но лучше ставить

javascript
// ❌ Опасно — легко сделать ошибку при редактировании
if (x > 0)
  console.log("положительное");
  console.log("это всегда выведется"); // НЕ часть if!

// ✓ Явно
if (x > 0) {
  console.log("положительное");
}

Тернарный оператор: условие ? true : false

javascript
// Синтаксис: condition ? valueIfTrue : valueIfFalse
const age = 20;
const status = age >= 18 ? "Взрослый" : "Несовершеннолетний";

// Тернарник — это выражение, можно использовать везде
console.log(`Статус: ${age >= 18 ? "взрослый" : "несовершеннолетний"}`);

// НЕ злоупотребляй вложенным тернарником — нечитаемо:
const grade = score >= 90 ? "A" : score >= 70 ? "B" : score >= 50 ? "C" : "F";

// Лучше функция с if:
function getGrade(score) {
  if (score >= 90) return "A";
  if (score >= 70) return "B";
  if (score >= 50) return "C";
  return "F";
}
JavaScript
// switch — когда много вариантов для одного значения

const day = new Date().getDay(); // 0=воскресенье, 1=понедельник...

switch (day) {
  case 0:
  case 6:
    console.log("Выходной день");
    break;
  case 1:
    console.log("Понедельник — начало недели");
    break;
  case 5:
    console.log("Пятница — почти выходные!");
    break;
  default:
    console.log("Рабочий день");
}

// Современная альтернатива switch — объект:
const dayType = {
  0: "выходной",
  6: "выходной",
  // остальные undefined → "рабочий"
};
const type = dayType[day] ?? "рабочий";

// Или Map для сложных случаев:
const actions = new Map([
  [0, () => restDay()],
  [6, () => restDay()],
  [5, () => fridayMode()],
]);
(actions.get(day) ?? defaultAction)();

Что произойдёт в switch без `break`?