Когда ты открываешь Spotify, он решает: показать бесплатную рекламу или нет? Есть подписка — играй без рекламы, нет — прерывай каждые три трека. Когда Delivery Club рассчитывает доставку: бесплатно при заказе от 500 рублей, иначе — 99 рублей. Это всё работа if/else.
Операторы сравнения из урока 04 возвращают true или false. Условия if/else используют эти результаты чтобы выбрать какой код выполнить.
Программа должна вести себя по-разному в зависимости от ситуации. Без условий код всегда делал бы одно и то же — это бесполезно в реальных приложениях.
if (условие) {
// выполнится если условие === true
} else if (другое условие) {
// выполнится если первое false, а это true
} else {
// выполнится если все условия выше false
}Важно: JS проверяет условия сверху вниз и останавливается на первом true.
Для коротких условий есть компактная запись:
const label = age >= 18 ? 'Взрослый' : 'Ребёнок'
// условие ? если true : если falseИспользуй тернарный оператор когда выбираешь между двумя значениями. Для сложной логики — if/else читаемее.
В условии JS преобразует любое значение в boolean. Falsy (ведут себя как false):
false, 0, '' (пустая строка), null, undefined, NaNВсё остальное — truthy (ведёт себя как true):
'0', [], {}, любое ненулевое число, любая непустая строкаif (cartItems.length) { // 0 — falsy, 3 — truthy
showCheckoutButton()
}Ошибка 1: Перепутать = и === в условии
let status = 'pending'
if (status = 'active') { // Присваивание! Всегда true — это баг!
console.log('активен') // выполнится даже если status был 'pending'
}
// Правильно:
if (status === 'active') { ... }Ошибка 2: Недостижимое условие — неверный порядок
function getLevel(score) {
if (score >= 0) return 'Начальный' // всегда сработает первым!
if (score >= 50) return 'Средний' // никогда не достигнется
if (score >= 80) return 'Продвинутый' // никогда не достигнется
}
// Правильно: проверяй от большего к меньшему
function getLevel(score) {
if (score >= 80) return 'Продвинутый'
if (score >= 50) return 'Средний'
return 'Начальный'
}Ошибка 3: Тернарный оператор для сложной логики
// Нечитаемо:
const msg = a > b ? a > c ? 'a biggest' : 'c biggest' : b > c ? 'b biggest' : 'c biggest'
// Используй if/else когда больше двух вариантовУсловия — основа бизнес-логики любого приложения: системы скидок, разграничение прав доступа (admin/user/guest), отображение разного контента в зависимости от статуса пользователя.
Расчёт скидки и доставки в интернет-магазине
const cartTotal = 3500
const userTier = 'gold' // 'bronze', 'silver', 'gold'
const isFirstOrder = false
// Система скидок: проверяем от выгоднейшей
let discountPct = 0
if (userTier === 'gold' && cartTotal >= 3000) {
discountPct = 20
} else if (userTier === 'silver' || cartTotal >= 5000) {
discountPct = 15
} else if (isFirstOrder) {
discountPct = 10
} else if (cartTotal >= 2000) {
discountPct = 5
}
// Стоимость доставки
const shippingCost = cartTotal >= 2000 ? 0 : 299
const shippingLabel = shippingCost === 0 ? 'Бесплатная доставка' : `Доставка: ${shippingCost} ₽`
// Итог
const finalTotal = cartTotal * (1 - discountPct / 100) + shippingCost
console.log(`Скидка: ${discountPct}%`) // Скидка: 20%
console.log(shippingLabel) // Бесплатная доставка
console.log(`Итого: ${finalTotal} ₽`) // Итого: 2800 ₽Когда ты открываешь Spotify, он решает: показать бесплатную рекламу или нет? Есть подписка — играй без рекламы, нет — прерывай каждые три трека. Когда Delivery Club рассчитывает доставку: бесплатно при заказе от 500 рублей, иначе — 99 рублей. Это всё работа if/else.
Операторы сравнения из урока 04 возвращают true или false. Условия if/else используют эти результаты чтобы выбрать какой код выполнить.
Программа должна вести себя по-разному в зависимости от ситуации. Без условий код всегда делал бы одно и то же — это бесполезно в реальных приложениях.
if (условие) {
// выполнится если условие === true
} else if (другое условие) {
// выполнится если первое false, а это true
} else {
// выполнится если все условия выше false
}Важно: JS проверяет условия сверху вниз и останавливается на первом true.
Для коротких условий есть компактная запись:
const label = age >= 18 ? 'Взрослый' : 'Ребёнок'
// условие ? если true : если falseИспользуй тернарный оператор когда выбираешь между двумя значениями. Для сложной логики — if/else читаемее.
В условии JS преобразует любое значение в boolean. Falsy (ведут себя как false):
false, 0, '' (пустая строка), null, undefined, NaNВсё остальное — truthy (ведёт себя как true):
'0', [], {}, любое ненулевое число, любая непустая строкаif (cartItems.length) { // 0 — falsy, 3 — truthy
showCheckoutButton()
}Ошибка 1: Перепутать = и === в условии
let status = 'pending'
if (status = 'active') { // Присваивание! Всегда true — это баг!
console.log('активен') // выполнится даже если status был 'pending'
}
// Правильно:
if (status === 'active') { ... }Ошибка 2: Недостижимое условие — неверный порядок
function getLevel(score) {
if (score >= 0) return 'Начальный' // всегда сработает первым!
if (score >= 50) return 'Средний' // никогда не достигнется
if (score >= 80) return 'Продвинутый' // никогда не достигнется
}
// Правильно: проверяй от большего к меньшему
function getLevel(score) {
if (score >= 80) return 'Продвинутый'
if (score >= 50) return 'Средний'
return 'Начальный'
}Ошибка 3: Тернарный оператор для сложной логики
// Нечитаемо:
const msg = a > b ? a > c ? 'a biggest' : 'c biggest' : b > c ? 'b biggest' : 'c biggest'
// Используй if/else когда больше двух вариантовУсловия — основа бизнес-логики любого приложения: системы скидок, разграничение прав доступа (admin/user/guest), отображение разного контента в зависимости от статуса пользователя.
Расчёт скидки и доставки в интернет-магазине
const cartTotal = 3500
const userTier = 'gold' // 'bronze', 'silver', 'gold'
const isFirstOrder = false
// Система скидок: проверяем от выгоднейшей
let discountPct = 0
if (userTier === 'gold' && cartTotal >= 3000) {
discountPct = 20
} else if (userTier === 'silver' || cartTotal >= 5000) {
discountPct = 15
} else if (isFirstOrder) {
discountPct = 10
} else if (cartTotal >= 2000) {
discountPct = 5
}
// Стоимость доставки
const shippingCost = cartTotal >= 2000 ? 0 : 299
const shippingLabel = shippingCost === 0 ? 'Бесплатная доставка' : `Доставка: ${shippingCost} ₽`
// Итог
const finalTotal = cartTotal * (1 - discountPct / 100) + shippingCost
console.log(`Скидка: ${discountPct}%`) // Скидка: 20%
console.log(shippingLabel) // Бесплатная доставка
console.log(`Итого: ${finalTotal} ₽`) // Итого: 2800 ₽Ты пишешь функцию для образовательной платформы вроде Skillbox. Функция принимает оценку (0-100) и возвращает уровень: 90-100 — "Отлично", 75-89 — "Хорошо", 60-74 — "Удовлетворительно", ниже 60 — "Нужно больше практики".
Начинай с наибольшего диапазона: if (score >= 90). Следующее условие уже знает что score < 90, поэтому пишем if (score >= 75) — не нужно писать score >= 75 && score < 90