Несколько условий в JavaScript

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

let age = 20;
let hasTicket = true;

if (age >= 18 && hasTicket) {
  console.log('Можно войти');
}

Здесь код выполнится только в том случае, если пользователь старше 18 лет и у него есть билет.

Зачем нужны несколько условий

Несколько условий нужны, когда одного сравнения недостаточно для принятия решения.

Например, для регистрации может быть нужно:

  • чтобы пользователю было 18 лет или больше;
  • чтобы он согласился с правилами;
  • чтобы он указал email.
let age = 19;
let acceptedRules = true;
let email = 'user@example.com';

if (age >= 18 && acceptedRules && email) {
  console.log('Регистрация доступна');
}

Все три части должны быть истинными. Если хотя бы одна проверка не пройдет, код внутри if не выполнится.

Оператор &&

Оператор && означает «и». Он используется, когда должны выполниться все условия.

let login = 'admin';
let password = '12345';

if (login === 'admin' && password === '12345') {
  console.log('Вход выполнен');
}

Сообщение появится только если совпал и логин, и пароль.

Если пароль будет другим, условие станет ложным:

let login = 'admin';
let password = 'qwerty';

if (login === 'admin' && password === '12345') {
  console.log('Вход выполнен');
} else {
  console.log('Неверный логин или пароль');
}

Оператор ||

Оператор || означает «или». Он используется, когда достаточно выполнения хотя бы одного условия.

let role = 'moderator';

if (role === 'admin' || role === 'moderator') {
  console.log('Доступ разрешен');
}

Доступ будет разрешен, если роль равна ‘admin’ или ‘moderator’.

Еще один пример:

let day = 'sunday';

if (day === 'saturday' || day === 'sunday') {
  console.log('Выходной');
}

Проверка диапазона

Частая задача - проверить, что число находится в нужном диапазоне.

let scores = 75;

if (scores >= 60 && scores <= 100) {
  console.log('Экзамен сдан');
}

Здесь значение должно быть больше или равно 60 и меньше или равно 100.

Такую запись можно читать почти как обычный текст: баллы не меньше 60 и не больше 100.

Комбинация условий

Операторы && и || можно использовать вместе.

let age = 17;
let hasParentPermission = true;
let hasTicket = true;

if ((age >= 18 || hasParentPermission) && hasTicket) {
  console.log('Можно войти');
}

В этом примере пользователь может войти, если ему уже есть 18 лет или есть разрешение родителей. Но билет нужен в любом случае.

Без скобок такое условие было бы сложнее читать и легче понять неправильно.

Скобки в условиях

Скобки помогают явно показать, какие проверки должны выполняться вместе.

let isLoggedIn = true;
let role = 'admin';

if (isLoggedIn && (role === 'admin' || role === 'manager')) {
  console.log('Можно открыть панель управления');
}

Сначала мы проверяем роль: подходит ‘admin’ или ‘manager’. Потом эта проверка объединяется с isLoggedIn.

Когда в условии есть и &&, и ||, скобки часто делают код понятнее даже тогда, когда JavaScript может разобраться без них.

Когда условие лучше упростить

Если условие становится длинным, его можно разбить на переменные с понятными именами.

let age = 20;
let acceptedRules = true;
let email = 'user@example.com';

let isAdult = age >= 18;
let hasEmail = Boolean(email);

if (isAdult && acceptedRules && hasEmail) {
  console.log('Регистрация доступна');
}

Такой код обычно легче читать. По именам isAdult и hasEmail видно, что именно проверяется.

Итого

Несколько условий в JavaScript чаще всего записываются через && и ||. Оператор && нужен, когда должны выполниться все проверки. Оператор || нужен, когда достаточно хотя бы одной. Если условие получается сложным, используйте скобки или вынесите части проверки в переменные с понятными именами.