Логическое И (&&)
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Оператор логического И (&&) (логическая конъюнкция) для набора булевых операндов будет true тогда и только тогда, когда все операнды являются true. В противном случае он будет false.
В более общем смысле, оператор возвращает значение первого ложного операнда, встреченного при вычислении слева направо, или значение последнего операнда, если все они истинные.
Попробуйте
const a = 3; const b = -2; console.log(a > 0 && b > 0); // Expected output: false
Синтаксис
x && y
Описание
Логическое И (&&) вычисляет операнды слева направо, немедленно возвращая значение первого встреченного ложного операнда; если все значения истинные, возвращается значение последнего операнда.
Если значение может быть преобразовано в true, это значение называется истинным. Если значение может быть преобразовано в false, это значение называется ложным.
Примеры выражений, которые могут быть преобразованы в false:
-
false; -
null; -
NaN; -
0; - пустая строка (
""или''или ` `` `); -
undefined.
Оператор И сохраняет небулевы значения и возвращает их как есть:
result = "" && "foo"; // result is assigned "" (empty string) result = 2 && 0; // result is assigned 0 result = "foo" && 4; // result is assigned 4
Даже несмотря на то, что оператор && может использоваться с небулевыми операндами, он все равно считается булевым оператором, поскольку его возвращаемое значение всегда может быть преобразовано в булевый примитив. Чтобы явно преобразовать его возвращаемое значение (или любое выражение в целом) в соответствующее булево значение, используйте двойной оператор НЕ или конструктор Boolean.
Короткое замыкание
Выражение логического И является оператором короткого замыкания. Поскольку каждый операнд преобразуется в булево значение, если результат одного преобразования оказывается false, оператор И останавливается и возвращает исходное значение этого ложного операнда; он не вычисляет никакие из оставшихся операндов.
Рассмотрим приведенный ниже псевдокод.
(some falsy expression) && expr
Часть expr никогда не вычисляется, потому что первый операнд (some falsy expression) вычисляется как ложный. Если expr является функцией, функция никогда не вызывается. См. пример ниже:
function A() {
console.log("called A");
return false;
}
function B() {
console.log("called B");
return true;
}
console.log(A() && B());
// Logs "called A" to the console due to the call for function A,
// && evaluates to false (function A returns false), then false is logged to the console;
// the AND operator short-circuits here and ignores function B
Приоритет операторов
Оператор И имеет более высокий приоритет, чем оператор ИЛИ, что означает, что оператор && выполняется раньше оператора || (см. приоритет операторов).
true || false && false; // true true && (false || false); // false (2 === 3) || (4 < 0) && (1 === 1); // false
Примеры
Использование И
Следующий код демонстрирует примеры оператора && (логического И).
a1 = true && true; // t && t returns true a2 = true && false; // t && f returns false a3 = false && true; // f && t returns false a4 = false && 3 === 4; // f && f returns false a5 = "Cat" && "Dog"; // t && t returns "Dog" a6 = false && "Cat"; // f && t returns false a7 = "Cat" && false; // t && f returns false a8 = "" && false; // f && f returns "" a9 = false && ""; // f && f returns false
Правила преобразования для булевых значений
Преобразование И в ИЛИ
Следующая операция с булевыми значениями:
bCondition1 && bCondition2
всегда равна:
!(!bCondition1 || !bCondition2)
Преобразование ИЛИ в И
Следующая операция с булевыми значениями:
bCondition1 || bCondition2
всегда равна:
!(!bCondition1 && !bCondition2)
Удаление вложенных скобок
Поскольку логические выражения вычисляются слева направо, всегда возможно удалить скобки из сложного выражения при соблюдении определенных правил.
Следующая составная операция с булевыми значениями:
bCondition1 || (bCondition2 && bCondition3)
всегда равна:
bCondition1 || bCondition2 && bCondition3
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
logical_and |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND