Оператор && в JavaScript

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

let age = 20;
let hasTicket = true;

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

Код внутри if выполнится только если возраст больше или равен 18 и билет есть.

Что делает оператор &&

Если говорить просто, && проверяет два выражения и возвращает успешный результат только тогда, когда оба выражения истинны.

console.log(true && true);
console.log(true && false);
console.log(false && true);

Результат:

true
false
false

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

Синтаксис

условие1 && условие2

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

let isAdult = age >= 18;
let hasAccess = isAdult && hasTicket;

Здесь в переменную hasAccess попадет результат проверки: подходит ли возраст и есть ли билет.

Оператор && в условиях

Чаще всего && используют внутри if.

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

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

Для входа должны совпасть и логин, и пароль. Если хотя бы одно значение не подходит, выполнится блок else.

&& возвращает значение

Важно помнить: оператор && возвращает не обязательно true или false. Он возвращает одно из значений.

console.log('JavaScript' && 100);
console.log(0 && 'текст');
console.log(null && 'значение');

Результат:

100
0
null

JavaScript идет слева направо. Если находит falsy значение, сразу возвращает его. Если все значения truthy, возвращает последнее.

Поэтому выражение ‘JavaScript’ && 100 возвращает 100: оба значения truthy, значит результатом становится последнее значение.

Короткое замыкание

Если первая часть выражения ложная, JavaScript не проверяет то, что стоит справа от &&. Это называется коротким замыканием.

let isAdmin = false;

isAdmin && console.log('Открыть настройки');

Сообщение не появится, потому что isAdmin равно false. До console.log() выполнение не дойдет.

Такую запись можно встретить в коде, но для начинающих часто понятнее обычный if:

if (isAdmin) {
  console.log('Открыть настройки');
}

Несколько проверок подряд

Оператор && можно использовать больше одного раза.

let age = 22;
let hasPassport = true;
let hasTicket = true;

if (age >= 18 && hasPassport && hasTicket) {
  console.log('Можно пройти регистрацию');
}

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

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

let isAdult = age >= 18;
let canRegister = isAdult && hasPassport && hasTicket;

if (canRegister) {
  console.log('Можно пройти регистрацию');
}

Итого

Оператор && используется, когда должны выполниться все условия. В if он помогает объединять несколько проверок. При этом && возвращает не только true или false, а одно из значений: первое falsy или последнее truthy. Если первая часть выражения ложная, правая часть не выполняется.