Javascript как сделать или

Логические операторы

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/logical-operators.

Для операций над логическими значениями в JavaScript есть || (ИЛИ), && (И) и ! (НЕ).

Хоть они и называются «логическими», но в JavaScript могут применяться к значениям любого типа и возвращают также значения любого типа.

|| (ИЛИ)

Оператор ИЛИ выглядит как двойной символ вертикальной черты:

Логическое ИЛИ в классическом программировании работает следующим образом: «если хотя бы один из аргументов true , то возвращает true , иначе – false «. В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения.

Получается следующая «таблица результатов»:

alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false

Если значение не логического типа – то оно к нему приводится в целях вычислений. Например, число 1 будет воспринято как true , а 0 – как false :

Обычно оператор ИЛИ используется в if , чтобы проверить, выполняется ли хотя бы одно из условий, например:

Можно передать и больше условий:

var hour = 12, isWeekend = true; if (hour < 10 || hour >18 || isWeekend)

Короткий цикл вычислений

JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый «короткий цикл вычисления».

Допустим, вычисляются несколько ИЛИ подряд: a || b || c || . . Если первый аргумент – true , то результат заведомо будет true (хотя бы одно из значений – true ), и остальные значения игнорируются.

Это особенно заметно, когда выражение, переданное в качестве второго аргумента, имеет сторонний эффект – например, присваивает переменную.

При запуске примера ниже присвоение x не произойдёт:

var x; true || (x = 1); alert(x); // undefined, x не присвоен

…А в примере ниже первый аргумент – false , так что ИЛИ попытается вычислить второй, запустив тем самым присваивание:

var x; false || (x = 1); alert(x); // 1

Источник

Логические операторы в JavaScript

В языке программирования JavaScript есть пять логических операторов || (или), && (и), ! (не), менее известный ?? оператор нулевого слияния, который еще относят к частному случаю оператора || (или) и тернарный оператор. Логические операторы используются для комбинирования булевых значений — true (истина) и false (ложь) и часто применяются в сочетании с операторами отношений (>, >=, 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 

Пример №1

 let examScores1 = parseInt(prompt("Введите баллы за первый экзамен")); let examScores2 = parseInt(prompt("Введите баллы за второй экзамен")); if (examScores1 >= 60 && examScores2 >= 60) < alert('Вы допущены к следующему экзамену'); >else

Пример №2

 let examScores1 = parseInt(prompt("Введите баллы за первый экзамен")); let examScores2 = parseInt(prompt("Введите баллы за второй экзамен")); let examScores3 = parseInt(prompt("Введите баллы за третий экзамен")); if (examScores1 >= 60 && examScores2 >= 60 && examScores3 >= 60) alert('Вы поступили в университет'); else alert('Вы не поступили в университет'); 

При необходимости можно передать и больше условий && (и)

Пример №3

В качестве операнда && допускаются любые другие значения

Пример №4

 console.log("текст" && undefined && 40); // значение = undefined console.log("текст" && 30 && 0 && 40); // значение = 0 console.log(40 && 30 && 3 && "текст"); // значение = текст 

В случае, когда операторов && несколько:

  • вычисление идет слева направо;
  • операнды принимают значение true или false ;
  • если операнд false сравнение останавливается, а результат — значение этого операнда;
  • если все значения true , тогда возвращается последний операнд;
  • если возвращаемый операнд не является булевым — результат значение операнда.

Если сказать по другому результат — это значение первого false или последнего операнда.

Пример №5

Приоритет у && (и) выше чем у || (или), таким образом сначала выполнить сравнение в левой и правой части выражения.

Логическое ИЛИ ||

|| (двойная вертикальная черта) — это бинарный оператор, который представляет собой логическое «или» и принимает значение true в том случае, когда все или одно из значений операндов истинно, в противном случае false .

Рассмотри результат при каждой возможной логической комбинации.

 console.log( true || true ); // true console.log( false || true ); // true console.log( true || false ); // true console.log( false || false ); // false 

Пример №6

 let examScores = parseInt(prompt("Сколько баллов вы получили за 3 экзамена")); let runningSpeed = parseInt(prompt("Как быстро вы пробегаете 100 метров")); if (examScores >= 250 || runningSpeed < 12) < alert('Вы поступили в университет'); >else

Пример №7

 let examScores = parseInt(prompt("Сколько баллов вы получили за 3 экзамена")); let runningSpeed = parseInt(prompt("Как быстро вы пробегаете 100 метров")); let placeOlympiad = parseInt(prompt("Какое место вы заняли на всероссийской олимпиаде")); if (examScores >= 250 || runningSpeed < 11 || placeOlympiad == 1) < alert('Вы поступили в университет'); >else

При необходимости можно передать и больше условий || (или).

Пример №8

 if (1 || 0) < // 1 - true, 0 - false console.log("Результат - true") >else console.log( "Результат - false" ); 

В качестве операнда || допускаются любые другие значения.

Пример №9

 console.log(undefined || "текст" || 40); // значение = текст console.log("" || null || 0 || "текст"); // значение = текст console.log(40 || 30 || 3 || "текст"); // значение = 40 

В случае, когда операторов || несколько:

  • вычисление идет слева направо;
  • операнды принимают значение true или false ;
  • если операнд true сравнение останавливается, а результат — значение этого операнда;
  • если все значения false , тогда возвращается последний операнд;
  • если возвращаемый операнд не является булевым — результат значение операнда.

Если сказать по другому результат — это значение первого true или последнего операнда.

Пример №10

 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 и наоборот;

Из этих трех операторов наивысший приоритет исполнения имеет ! (не), затем && (и) и только потом || (или).

Skypro - научим с нуля

Источник

Логические операторы

В 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

Источник

Читайте также:  Количество недель месяце php
Оцените статью