- Логические операторы
- || (ИЛИ)
- ИЛИ «||» находит первое истинное значение
- && (И)
- Логические операции
- Читайте также
- Логические операции
- Логические операторы
- Логические операции
- Логические И и ИЛИ
- Глава 16 Логические операции
- Резюме: логические операции и выражения
- IV. Логические операции
- Поразрядные логические операции
- 4. Null-значения и логические операции
- Логические операции (Logical operations)
- Логические операции
- 4.3. Операции сравнения и логические операции
- Логические операции
- 3.2.4 Побитовые логические операции
- Логические операции
- Logical OR (||)
- Try it
- Syntax
- Description
- Short-circuit evaluation
- Operator precedence
- Examples
- Using OR
- Conversion rules for booleans
- Converting AND to OR
- Converting OR to AND
- Removing nested parentheses
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
Логические операторы
В JavaScript есть четыре логических оператора: || (ИЛИ), && (И) и ! (НЕ), ?? (Оператор нулевого слияния). Здесь мы рассмотрим первые три, оператор ?? будет в следующей статье.
Несмотря на своё название, данные операторы могут применяться к значениям любых типов. Полученные результаты также могут иметь различный тип.
Давайте рассмотрим их подробнее.
|| (ИЛИ)
Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:
Традиционно в программировании ИЛИ предназначено только для манипулирования булевыми значениями: в случае, если какой-либо из аргументов true , он вернёт true , в противоположной ситуации возвращается false .
В JavaScript, как мы увидим далее, этот оператор работает несколько иным образом. Но давайте сперва посмотрим, что происходит с булевыми значениями.
Существует всего четыре возможные логические комбинации:
alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false
Как мы можем наблюдать, результат операций всегда равен true , за исключением случая, когда оба аргумента false .
Если значение не логического типа, то оно к нему приводится в целях вычислений.
Например, число 1 будет воспринято как true , а 0 – как false :
Обычно оператор || используется в if для проверки истинности любого из заданных условий.
Можно передать и больше условий:
let hour = 12; let isWeekend = true; if (hour < 10 || hour >18 || isWeekend) < alert( 'Офис закрыт.' ); // это выходной >
ИЛИ «||» находит первое истинное значение
Описанная выше логика соответствует традиционной. Теперь давайте поработаем с «дополнительными» возможностями JavaScript.
Расширенный алгоритм работает следующим образом.
При выполнении ИЛИ || с несколькими значениями:
result = value1 || value2 || value3;
Оператор || выполняет следующие действия:
- Вычисляет операнды слева направо.
- Каждый операнд конвертирует в логическое значение. Если результат true , останавливается и возвращает исходное значение этого операнда.
- Если все операнды являются ложными ( false ), возвращает последний из них.
Значение возвращается в исходном виде, без преобразования.
Другими словами, цепочка ИЛИ || возвращает первое истинное значение или последнее, если такое значение не найдено.
alert( 1 || 0 ); // 1 alert( true || 'no matter what' ); // true alert( null || 1 ); // 1 (первое истинное значение) alert( null || 0 || 1 ); // 1 (первое истинное значение) alert( undefined || null || 0 ); // 0 (поскольку все ложно, возвращается последнее значение)
Это делает возможным более интересное применение оператора по сравнению с «чистым, традиционным, только булевым ИЛИ».
- Получение первого истинного значения из списка переменных или выражений. Представим, что у нас имеется ряд переменных, которые могут содержать данные или быть null/undefined . Как мы можем найти первую переменную с данными? С помощью || :
let currentUser = null; let defaultUser = "John"; let name = currentUser || defaultUser || "unnamed"; alert( name ); // выбирается "John" – первое истинное значение
let x; true || (x = 1); alert(x); // undefined, потому что (x = 1) не вычисляется
Если бы первый аргумент имел значение false , то || приступил бы к вычислению второго и выполнил операцию присваивания:
let x; false || (x = 1); alert(x); // 1
&& (И)
Оператор И пишется как два амперсанда && :
В традиционном программировании И возвращает true , если оба аргумента истинны, а иначе – false :
alert( true && true ); // true alert( false && true ); // false alert( true && false ); // false alert( false && false ); // false
Логические операции
Логические операции позволяют комбинировать выражения, возвращающие логические величины. Язык JavaScript поддерживает три логические операции.
Операция логического И (&&) возвращает true, если только оба операнда истинны. Например, (1<7)&&(3>2). При этом сначала вычисляется левый операнд. Если он ложен, то второй операнд не вычисляется, что надо учитывать. Так, в строке (3<1)&&(i++<7) операция инкремента переменной i не произойдет.
Операция логического ИЛИ (||) возвращает true, если хотя бы один операнд истинен. Например, (2<3) || (1>2). При этом сначала вычисляется левый операнд. Если он истинен, то второй операнд не вычисляется.
Операция логического НЕ (!) является унарной и изменяет значение логической величины на обратное.
Данный текст является ознакомительным фрагментом.
Читайте также
Логические операции
Логические операции Логические операции позволяют комбинировать выражения, возвращающие логические величины. Язык JavaScript поддерживает три логические операции.Операция логического И (&&) возвращает true, если только оба операнда истинны. Например, (1<7)&&(3>2). При
Логические операторы
Логические операторы Логические операторы выполняют действия над логическими значениями. Все они приведены в табл. 14.5. А в табл. 14.6 и 14.7 показаны результаты выполнения этих операторов.Основная область применения логических операторов — выражения сравнения (о них см.
Логические операции
Логические операции Для создания объектов более сложных, чем изначальные звезды, прямоугольники и эллипсы, мы можем использовать логические операции. Это гораздо проще, чем полноценная векторная графика, где мы будем создавать фигуры с нуля.Для выполнения логических
Логические И и ИЛИ
Логические И и ИЛИ Вы уже видели, что такое управляющие структуры и как их использовать. Для решения тех же задач есть еще два способа. Это логическое И — «&&» и логическое «ИЛИ» — « || ». Логическое И используется следующим образом:выражение_1&&выражение_2Сначала
Глава 16 Логические операции
Глава 16 Логические операции • Понятие логических операций• Использование логических операцийРаботая с выделением, с которым мы познакомились в прошлой главе, можно использовать логические операции – это позволит в некоторых случаях упростить создание выделения или
Резюме: логические операции и выражения
Резюме: логические операции и выражения 1. ЛОГИЧЕСКИЕ ОПЕРАЦИИ Операндами логических операций обычно являются условные выражения. У операции != имеется только один операнд. Остальные имеют по два — один слева от знака и другой справа от него. && И|| ИЛИ! НЕII.
IV. Логические операции
IV. Логические операции Обычно логические операции «считают» условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа. && Логическое И: результат операции имеет значение «истина»,
Поразрядные логические операции
Поразрядные логические операции Четыре операции производят действия над данными, относящимися к классу целых, включая char. Они называются «поразрядными», потому что выполняются отдельно над каждым разрядом независимо от разряда, находящегося слепа или справа. ~ :
4. Null-значения и логические операции
4. Null-значения и логические операции Обычно в системах управления базами данных непосредственно поддерживаются только три логические операции: отрицание ¬, конъюнкция & и дизъюнкция ?. Операции следования ? и равносильности ? выражаются через них с помощью
Логические операции (Logical operations)
Логические операции (Logical operations) template ‹class T›struct logical_and: binary_function‹T, T, bool› < bool operator()(const T& x, const T& y) const >;template ‹class T›struct logical_or: binary_function‹T, T, bool› < bool operator()(const T& x, const T& y) const >;template ‹class T›struct logical_not: unary_function‹T, bool› < bool operator()(const T& x) const
Логические операции
Логические операции Логические операции выполняют над своими операндами логические функции И (&&) и ИЛИ (||). Операнды логических операций могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Сначала всегда
4.3. Операции сравнения и логические операции
4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое
Логические операции
Логические операции В XSLT имеются две логические операции — or и and. Эти операции бинарны, то есть каждая из них определена для двух операндов. Если операнды не являются булевыми значениями, они неявным образом приводятся к булевому типу.Семантика or и and очевидна — они
3.2.4 Побитовые логические операции
3.2.4 Побитовые логические операции Побитовые логические операцииamp; ! ^ ~ »» ««применяются к целым, то есть к объектам типа char, short, int, long и их unsigned аналогам, результаты тоже цлые.Одно из стандартных применений побитовых логических опраций – реализация маленького множества
Логические операции
Логические операции К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно
Logical OR (||)
The logical OR ( || ) (logical disjunction) operator for a set of operands is true if and only if one or more of its operands is true. It is typically used with boolean (logical) values. When it is, it returns a Boolean value. However, the || operator actually returns the value of one of the specified operands, so if this operator is used with non-Boolean values, it will return a non-Boolean value.
Try it
Syntax
Description
If x can be converted to true , returns x ; else, returns y .
If a value can be converted to true , the value is so-called truthy. If a value can be converted to false , the value is so-called falsy.
Examples of expressions that can be converted to false are:
Even though the || operator can be used with operands that are not Boolean values, it can still be considered a boolean operator since its return value can always be converted to a boolean primitive. To explicitly convert its return value (or any expression in general) to the corresponding boolean value, use a double NOT operator or the Boolean constructor.
Short-circuit evaluation
The logical OR expression is evaluated left to right, it is tested for possible «short-circuit» evaluation using the following rule:
(some truthy expression) || expr is short-circuit evaluated to the truthy expression.
Short circuit means that the expr part above is not evaluated, hence any side effects of doing so do not take effect (e.g., if expr is a function call, the calling never takes place). This happens because the value of the operator is already determined after the evaluation of the first operand. See example:
function A() console.log("called A"); return false; > function B() console.log("called B"); return true; > console.log(B() || A()); // Logs "called B" due to the function call, // then logs true (which is the resulting value of the operator)
Operator precedence
The following expressions might seem equivalent, but they are not, because the && operator is executed before the || operator (see operator precedence).
true || false && false; // returns true, because && is executed first (true || false) && false; // returns false, because grouping has the highest precedence
Examples
Using OR
The following code shows examples of the || (logical OR) operator.
true || true; // t || t returns true false || true; // f || t returns true true || false; // t || f returns true false || 3 === 4; // f || f returns false "Cat" || "Dog"; // t || t returns "Cat" false || "Cat"; // f || t returns "Cat" "Cat" || false; // t || f returns "Cat" "" || false; // f || f returns false false || ""; // f || f returns "" false || varObject; // f || object returns varObject
Note: If you use this operator to provide a default value to some variable, be aware that any falsy value will not be used. If you only need to filter out null or undefined , consider using the nullish coalescing operator.
Conversion rules for booleans
Converting AND to OR
The following operation involving booleans:
Converting OR to AND
The following operation involving booleans:
Removing nested parentheses
As logical expressions are evaluated left to right, it is always possible to remove parentheses from a complex expression following some rules.
The following composite operation involving booleans:
!(!bCondition1 || !bCondition2 && !bCondition3)
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Jul 7, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.