Условное ветвление в JavaScript #
Ветвление выбирает один из путей выполнения в зависимости от условия. В JavaScript для этого используют if / else, тернарный оператор ? : и switch.
if, else if, else #
function deliveryLabel(distanceKm) {
if (distanceKm <= 3) {
return 'пеший курьер'
} else if (distanceKm <= 15) {
return 'велокурьер'
} else {
return 'авто'
}
}
deliveryLabel(8) // "велокурьер"
Условие приводится к boolean по правилам truthy/falsy. Для явных сравнений пишите ===, >, <= и т.д.
Одинарную инструкцию можно писать без фигурных скобок, но в командной разработке скобки почти всегда оставляют — меньше риск при правках:
if (isFrozen) return
if (isFrozen) {
return
}
Тернарный оператор #
Короткая форма «если → иначе» как выражение (возвращает значение):
const seatStatus = ticketsLeft > 0 ? 'available' : 'sold-out'
Вложенные тернарные цепочки быстро теряют читаемость — лучше if или таблица соответствий:
function toneByScore(score) {
if (score >= 90) return 'excellent'
if (score >= 70) return 'good'
if (score >= 40) return 'weak'
return 'fail'
}
switch #
switch сравнивает выражение с набором case через алгоритм строгого равенства (===):
function httpHint(status) {
switch (status) {
case 200:
case 201:
return 'успех'
case 400:
return 'ошибка клиента'
case 500:
case 502:
return 'ошибка сервера'
default:
return 'неизвестный статус'
}
}
httpHint(201) // "успех"
После совпадения выполнение идёт «насквозь» к следующему case, пока не встретится break или return. Группировка case 200: case 201: — осознанный fall-through.
switch (true) с условиями в case работает, но чаще запутывает; для диапазонов удобнее if.
Ранний возврат вместо глубокой вложенности #
function canPublish(article, user) {
if (!user) return false
if (!article.title?.trim()) return false
if (article.status === 'archived') return false
return user.role === 'editor' || user.role === 'admin'
}
Плоские проверки с ранним return читаются проще, чем пирамида if внутри if.
Выбор конструкции #
| Задача | Инструмент |
|---|---|
| Диапазоны, сложная логика | if / else if |
| Два простых варианта → значение | тернарный ? : |
| Дискретные значения одного выражения | switch |
| Много независимых флагов | серия ранних return / if |
Итог #
if— универсальный способ ветвления.- Тернарный оператор хорош для коротких выражений, не для бизнес-логики на пол-экрана.
switchудобен для набора точных значений; не забывайтеbreakилиreturn.- Ранний выход уменьшает вложенность и упрощает сопровождение.