Оператор && в 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. Если первая часть выражения ложная, правая часть не выполняется.