Вложенные условия в JavaScript
- Что такое вложенные условия
- Простой пример
- else во вложенном условии
- Несколько уровней вложенности
- Когда можно заменить на &&
- Когда лучше использовать else if
- Итого
Вложенное условие - это if, который находится внутри другого if. Такой подход нужен, когда вторую проверку имеет смысл выполнять только после первой.
let isLoggedIn = true;
let role = 'admin';
if (isLoggedIn) {
if (role === 'admin') {
console.log('Открыть панель управления');
}
}
Сначала JavaScript проверяет isLoggedIn. Если пользователь не вошел в аккаунт, внутренняя проверка роли даже не выполняется.
Что такое вложенные условия
Обычное условие проверяет одну ситуацию:
if (age >= 18) {
console.log('Доступ разрешен');
}
Вложенное условие добавляет проверку внутри уже выполненного условия:
if (age >= 18) {
if (hasTicket) {
console.log('Можно войти');
}
}
Внутренний if сработает только тогда, когда внешний if тоже сработал.
Простой пример
Допустим, пользователь может оформить заказ только если он авторизован. А скидка применяется только если у него есть промокод.
let isLoggedIn = true;
let promoCode = 'SALE';
if (isLoggedIn) {
console.log('Заказ можно оформить');
if (promoCode) {
console.log('Применить скидку');
}
}
Проверка промокода находится внутри проверки авторизации. Если пользователь не авторизован, до промокода программа не дойдет.
else во вложенном условии
У вложенного условия может быть свой блок else.
let isLoggedIn = true;
let isEmailConfirmed = false;
if (isLoggedIn) {
if (isEmailConfirmed) {
console.log('Открыть личный кабинет');
} else {
console.log('Подтвердите email');
}
} else {
console.log('Войдите в аккаунт');
}
Здесь внешний else относится к проверке isLoggedIn, а внутренний else - к проверке isEmailConfirmed.
Именно поэтому важны отступы. Они помогают глазами увидеть, к какому if относится каждый else.
Несколько уровней вложенности
Вложенность может быть глубже одного уровня, но такой код быстро становится сложным.
let isLoggedIn = true;
let role = 'admin';
let isActive = true;
if (isLoggedIn) {
if (role === 'admin') {
if (isActive) {
console.log('Доступ разрешен');
}
}
}
Этот пример работает, но читать его уже не очень удобно. Чем больше вложенность, тем сложнее понять, при каких условиях выполнится код.
Когда можно заменить на &&
Если все условия просто должны выполниться одновременно, вложенность можно заменить оператором &&.
let isLoggedIn = true;
let role = 'admin';
let isActive = true;
if (isLoggedIn && role === 'admin' && isActive) {
console.log('Доступ разрешен');
}
Такой код короче и читается проще: пользователь вошел в аккаунт, его роль ‘admin’, и аккаунт активен.
Но если внутри каждой проверки нужно делать разные действия, вложенный if может быть понятнее.
Когда лучше использовать else if
Если нужно выбрать один вариант из нескольких, чаще подходит else if, а не вложенные условия.
let scores = 75;
if (scores >= 90) {
console.log('Оценка 5');
} else if (scores >= 60) {
console.log('Оценка 4');
} else {
console.log('Оценка 3');
}
Здесь условия идут по очереди. Это проще, чем вкладывать одну проверку баллов в другую.
Итого
Вложенные условия позволяют выполнить одну проверку только после другой. Это удобно, когда проверки зависят друг от друга. Но глубокая вложенность быстро усложняет код. Если нужно просто проверить несколько условий одновременно, часто лучше использовать &&. Если нужно выбрать один вариант из нескольких, лучше подойдет else if.