В языке программирования JavaScript есть пять логических операторов ||
(или), &&
(и), !
(не), менее известный ??
оператор нулевого слияния, который еще относят к частному случаю оператора ||
(или) и тернарный оператор. Логические операторы используются для комбинирования булевых значений - true
(истина) и false
(ложь) и часто применяются в сочетании с операторами отношений (>, >=, <, <=, ==, !=), объединяя два и более выражения в одно более сложное.
Сразу стоит уточнить, что логические операторы могут применяться к значениям любых типов, результат также может иметь различный тип. Но нужно помнить, что все значения в JavaScript являются либо true
либо false
.
Если значение равно 0, -0, null, false, NaN, undefined или "" (пустая строка) - результат
false
. Все остальное, включая строку "false" - результатtrue
.
Остановимся подробнее на операторах ||
(или), &&
(и) и !
(не)
&&
&&
(двой знак амперсанда) - это бинарный оператор, который представляет собой логически «и» и принимает значение true
только в том случае, когда оба операнда истинны, в противном случае false
.
Рассмотри результат при каждой возможной логической комбинации.
console.log( true && true ); // true
console.log( false && true ); // false
console.log( true && false ); // false
console.log( false && false ); // false
let examScores1 = parseInt(prompt("Введите баллы за первый экзамен"));
let examScores2 = parseInt(prompt("Введите баллы за второй экзамен"));
if (examScores1 >= 60 && examScores2 >= 60) {
alert('Вы допущены к следующему экзамену');
} else {
alert('Вы не поступили в университет');
}
let examScores1 = parseInt(prompt("Введите баллы за первый экзамен"));
let examScores2 = parseInt(prompt("Введите баллы за второй экзамен"));
let examScores3 = parseInt(prompt("Введите баллы за третий экзамен"));
if (examScores1 >= 60 && examScores2 >= 60 && examScores3 >= 60) alert('Вы поступили в университет');
else alert('Вы не поступили в университет');
При необходимости можно передать и больше условий &&
(и)
if (1 && 0) { // 1 - true, 0 - false
console.log("Результат - true");
} else console.log( "Результат - false" );
В качестве операнда &&
допускаются любые другие значения
console.log("текст" && undefined && 40); // значение = undefined
console.log("текст" && 30 && 0 && 40); // значение = 0
console.log(40 && 30 && 3 && "текст"); // значение = текст
В случае, когда операторов &&
несколько:
true
или false
;false
сравнение останавливается, а результат - значение этого операнда;true
, тогда возвращается последний операнд;Если сказать по другому результат - это значение первого false
или последнего операнда.
x && y || a && b
Приоритет у &&
(и) выше чем у ||
(или), таким образом сначала выполнить сравнение в левой и правой части выражения.
||
||
(двойная вертикальная черта) - это бинарный оператор, который представляет собой логическое «или» и принимает значение true
в том случае, когда все или одно из значений операндов истинно, в противном случае false
.
Рассмотри результат при каждой возможной логической комбинации.
console.log( true || true ); // true
console.log( false || true ); // true
console.log( true || false ); // true
console.log( false || false ); // false
let examScores = parseInt(prompt("Сколько баллов вы получили за 3 экзамена"));
let runningSpeed = parseInt(prompt("Как быстро вы пробегаете 100 метров"));
if (examScores >= 250 || runningSpeed < 12) {
alert('Вы поступили в университет');
} else {
alert('Вы не поступили в университет');
}
let examScores = parseInt(prompt("Сколько баллов вы получили за 3 экзамена"));
let runningSpeed = parseInt(prompt("Как быстро вы пробегаете 100 метров"));
let placeOlympiad = parseInt(prompt("Какое место вы заняли на всероссийской олимпиаде"));
if (examScores >= 250 || runningSpeed < 11 || placeOlympiad == 1) {
alert('Вы поступили в университет');
} else {
alert('Вы не поступили в университет');
}
При необходимости можно передать и больше условий ||
(или).
if (1 || 0) { // 1 - true, 0 - false
console.log("Результат - true")
} else console.log( "Результат - false" );
В качестве операнда ||
допускаются любые другие значения.
console.log(undefined || "текст" || 40); // значение = текст
console.log("" || null || 0 || "текст"); // значение = текст
console.log(40 || 30 || 3 || "текст"); // значение = 40
В случае, когда операторов ||
несколько:
true
или false
;true
сравнение останавливается, а результат - значение этого операнда;false
, тогда возвращается последний операнд;Если сказать по другому результат - это значение первого true
или последнего операнда.
let scores = parseInt(prompt("Сколько баллов вы набрали на экзамене"));
scores < 90 || alert('Ваша оценка 5');
В результате «сокращенного вычисления» (когда вычисления заканчиваются, если результат уже известен) с помощью ||
(или), можно реализовывать и такие конструкции. В данном примере это своеобразная замена if
, которая может быть удобна в определенных случаях.
!
!
(восклицательный знак) - это унарный оператор, который располагается перед операндом и приводит аргумент к логическому true
или false
, а затем возвращает противоположное значение.
console.log( !true ); // false
console.log( !false ); // true
console.log( !'текст' ); // false
console.log( !5 ); // false
console.log( !0 ); // true
В свою очередь двойное отрицание !!
используется для приведения значения к логическому типу.
console.log( !!true ); // true
console.log( !!false ); // false
console.log( !!'текст' ); // true
console.log( !!5 ); // true
console.log( !!0 ); // false
Эквивалентом такой конструкции служит встроенная функция Boolean
console.log( Boolean('текст') ); // true
console.log( Boolean(5) ); // true
console.log( Boolean(0) ); // true
Логически оператор !
имеет более высокий приоритет, нежели ||
и &&
, поэтому при необходимости сделать отрицание выражения, конструкцию нужно брать в скобки.
console.log( !(true && false) ); // true
console.log( !true && false ); // false
console.log( !(true || true) ); // false
console.log( !true || true ); // true
В данном уроке мы подробно рассмотрели логические операторы:
&&
(и) - возвращает true
, когда оба операнда true
, в противном случае false
;||
(или) - возвращает false
, если два операнда false
, во всех остальных случаях true
;!
(не) - возвращает true
, если значение операнда false
и наоборот;Из этих трех операторов наивысший приоритет исполнения имеет !
(не), затем &&
(и) и только потом ||
(или).