Сравнения и логические операторы

Операторы сравнения

Операторы сравнения используются в логических операторах для определения равенства или разницы между переменными или значениями.

При x = 5 в следующей таблице объясняются операторы сравнения:

Оператор Описание Сравнительный возвратный тест
== это равно х == 8 ложный Пытаться »
х == 5 настоящий Пытаться »
x == «5» настоящий Пытаться »
=== равное значение и один и тот же тип х === 5 настоящий Пытаться »
x === «5» ложный Пытаться »
!= не то же самое икс! = 8 настоящий Пытаться »
!== неравное значение или другой тип икс! == 5 ложный Пытаться »
икс! == «5» настоящий Пытаться »
икс! == 8 настоящий Пытаться »
> больше, чем х> 8 ложный Пытаться »
< меньше, чем х <8 настоящий Пытаться »
>= больше или равно х> = 8 ложный Пытаться »
<= меньше или равно х <= 8 настоящий Пытаться »

ИЛИ «||» находит первое истинное значение

Описанная выше логика соответствует традиционной. Теперь поработаем с расширенными функциями JavaScript.

Расширенный алгоритм работает следующим образом.

Когда ИЛИ || с несколькими значениями:

результат = значение1 || значение2 || value3;

Оператор || выполняет следующие действия:

  • Вычисляйте операнды слева направо.
  • Каждый операнд преобразуется в логическое значение. Если результат верен, он прерывается и возвращает исходное значение этого операнда.
  • Если все операнды ложны (ложны), вернуть последний.

Значение возвращается как есть, без преобразования.

Другими словами, ИЛИ «||» возвращает первое истинное значение или последнее, если это значение не было найдено.

Например:

уведомление (1 || 0); // 1 предупреждение (true || ‘несмотря ни на что’); // предупреждение true (null || 1); // 1 (первое истинное значение) alert (null || 0 || 1); // 1 (первое истинное значение) alert (undefined || null || 0); // 0 (так как все ложно, возвращается последнее значение)

Это делает возможным более интересное использование оператора, чем «чистое, традиционное, только логическое ИЛИ».

  1. Получите первое истинное значение из списка переменных или выражений.

    Представим, что у нас есть ряд переменных, которые могут содержать данные или иметь значение null / undefined. Как найти первую переменную данных?

    С ||:

    пусть currentUser = null; пусть defaultUser = «Джон»; let name = currentUser || defaultUser || «безымянный»; уведомление (имя); // «Джон» выбран — первое истинное значение

    Если бы и currentUser, и defaultUser были ложными, в результате мы увидели бы «безымянный».

  2. Сокращенный расчет.

    Операнды могут быть одиночными значениями или произвольными выражениями. ИЛИ вычисляет их слева направо. Расчет останавливается при достижении первого истинного значения. Этот процесс называется «сокращенной оценкой», потому что второй операнд оценивается только в том случае, если первого недостаточно для оценки всего выражения.

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

    В следующем примере x не изменяется:

    оставляет x; правда || (х = 1); уведомление (x); // не определено, потому что (x = 1) не вычисляется

    Если первый аргумент ложен, то || начал бы вычислять второй, и я бы выполнил задачу:

    оставляет x; ложь || (х = 1); уведомление (x); // 1

    Задание — это всего лишь пример. Конечно, могут быть и другие побочные эффекты, которые не проявятся, если расчет не достигнет их.

    Как мы видим, этот вариант использования || он «аналогичен самому себе». Первый операнд преобразуется в логический. Если окажется ложным, рассчитывается второй.

    В большинстве случаев лучше использовать «нормальный» способ, чтобы код был более понятным, но иногда это может быть удобно.

Как это можно использовать

Операторы сравнения могут использоваться в условных операторах для сравнения значений и воздействия на результат:

если (возраст <18) text = «Слишком молод»;

Вы узнаете больше об использовании условных операторов в следующей главе этого руководства.

Советы

  • Булева алгебра

  • Соединение

  • Дизъюнкция

И «&&» находит первое ложное значение

С несколькими последовательными операторами AND:

результат = значение1 && значение2 && значение3;

Оператор && выполняет следующие операции:

  • Вычисляйте операнды слева направо.
  • Каждый операнд преобразуется в логическое значение. Если результат ложный, он прерывается и возвращает исходное значение этого операнда.
  • Если все операнды верны, возвращается последний.

Другими словами, И возвращает первое ложное значение. Или последнее, если ничего не найдено.

Вышеупомянутые правила аналогичны поведению ИЛИ. Разница в том, что И возвращает первое ложное значение, а ИЛИ возвращает первое истинное значение.

Примеры:

// Если первый операнд истинен, // E возвращает второй: alert (1 && 0); // 0 предупреждение (1 && 5); // 5 // Если первый операнд ложный, // E возвращает его. Второй операнд игнорируется предупреждением (null && 5); // пустое предупреждение (0 && «неважно что»); // 0

Вы можете передавать несколько значений подряд. В этом случае будет возвращено первое «ложное» значение, на котором вычисления остановились.

уведомление (1 && 2 && null && 3); // нулевой

Когда все значения верны, возвращается последнее

уведомление (1 && 2 && 3); // 3У оператора && приоритет выше, чем у оператора ||

Приоритет оператора AND && больше, чем OR ||, поэтому он выполняется первым.

Следовательно, код a && b || c && d по сути выглядит так, как если бы выражения && были заключены в круглые скобки: (a && b) || (CD).

Как и оператор OR, AND && может иногда заменять if.

Например:

пусть x = 1; (x> 0) && alert (‘Больше нуля!’);

Действие справа от && будет выполнено только в том случае, если вычисления достигнут его. То есть предупреждение будет срабатывать, если левая часть (x> 0) истинна.

Получился аналог:

пусть x = 1; если (х> 0) {предупреждение (‘больше нуля!’); }

Однако, как правило, лучше читается и понимается вариант if.

это более очевидно, поэтому лучше его использовать.

Задание

Джон поручил Сэму реализовать автоматическое распознавание солдат Ланнистеров на видео. Идея автоматизировать крепостные часы показалась ему привлекательной. В процессе Сэму нужно было написать функцию, которая будет определять, находится ли перед ним Ланнистер или нет. Поразмыслив, Сэм изложил следующие правила определения Ланнистера:

Если у солдата красная броня И нет щита

ИЛИ

если у солдата есть щит со львом

тогда это Ланнистер.

Ланнистер или нет

Напишите функцию isLannisterSoldier (), которая принимает на вход два аргумента:

  1. Цвет брони (веревка). Если броня красная, значит линия красная.
  2. null, если нет щита. Веревочный лев, если есть щит, и на нем изображен лев.

Функция возвращает истину, если Ланнистер распознан, и ложь в противном случае.

Примеры звонков:

isLannisterSoldier («красный», «лев»); // истина isLannisterSoldier (‘синий’, null); // ложь class = «my-4»>

Хотите проверить свои навыки JavaScript?

  • Тест на навыки JavaScript — Уровень I
  • Тест на навыки JavaScript — Уровень II

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

Логические операторы используются для определения логики между переменными или значениями.

При x = 6 и y = 3 в следующей таблице объясняются логические операторы:

Оператор Описание Пример теста
&& а также (x <10 && y> 1) верно Пытаться »
|| или (x == 5 || y == 5) ложно Пытаться »
! нет ! (x == y) верно Пытаться »

Условный (тернарный) оператор

JavaScript также содержит условный оператор, который присваивает значение переменной на основе условия.

Синтаксис

имя переменной = (условие)? значение1: значение2

Пример

var votable = (возраст <18)? «Слишком молод»: «Достаточно стар»; Попробуй сам »

Если возраст меньше 18 лет, озвучиваемым значением будет «Слишком молодой», иначе озвучиваемым значением будет «Слишком старый».

Задачи

Что выведет alert (ИЛИ)?

важность: 5

Что даст приведенный ниже код?

alert (null || 2 || undefined); решение

Ответ: 2, это первое значение, которое даст истину в логическом контексте.

предупреждение (null || 2 || не определено);

Что выведет alert (ИЛИ)?

важность: 3

Что даст приведенный ниже код?

alert (alert (1) || 2 || alert (3)); решение

Ответ: сначала 1, потом 2.

alert (alert (1) || 2 || alert (3));

Вызов предупреждения не возвращает значения или, другими словами, возвращает undefined.

  1. Первый оператор ИЛИ || выполнит первое предупреждение (1).
  2. Он получает значение undefined и переходит ко второму операнду в поисках истинного значения.
  3. Поскольку второй операнд 2 истинен, вычисление закончится неопределенным значением || 2 будет 2, что будет выпущено во внешнем уведомлении(….).

Второй оператор || не будет выполняться, выполнение не дойдет до предупреждения (3), поэтому 3 не будет отображаться.

Что выведет alert (И)?

важность: 5

Что даст приведенный ниже код?

уведомление (1 && null && 2); решение

Ответ: null, потому что это первое «ложное» значение в списке.

уведомление (1 && null && 2);

Что выведет alert (И)?

важность: 3

Что даст приведенный ниже код?

уведомление (уведомление (1) и уведомление (2)); решение

Ответ: 1, а затем неопределенный.

уведомление (уведомление (1) и уведомление (2));

Вызов предупреждения не возвращает значения или, другими словами, возвращает undefined.

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

Что выведет этот код?

важность: 5

Что даст приведенный ниже код?

уведомление (null || 2 && 3 || 4); решение

Ответ: 3.

уведомление (null || 2 && 3 || 4);

Оператор && имеет приоритет перед ||, поэтому он будет выполнен первым.

Результатом будет 2 && 3 = 3, поэтому выражение будет иметь следующий вид:

null || 3 || 4

Результатом является первое истинное значение: 3.

Проверка значения из диапазона

важность: 3

Напишите условие if, чтобы убедиться, что возраст составляет от 14 до 90 лет включительно.

«Включено» означает, что возраст может быть от 14 до 90 лет.

решениеif (возраст> = 14 && возраст <= 90)

&& (И)

Оператор И записывается как два амперсанда &&:

результат = а && б;

В традиционном программировании И возвращает истину, если оба аргумента истинны, и ложь в противном случае:

предупреждение (истина && истина); // истинное предупреждение (false && true); // ложное предупреждение (true && false); // ложное предупреждение (false && false); // ложный

Пример с if:

сейчас = 12; оставить минуту = 30; if (час == 12 && минута == 30) {предупреждение (‘Время 12:30’); }

Как и в случае с ИЛИ, в качестве операнда И допускается любое значение:

if (1 && 0) {// возвращает true && false alert («не будет работать, потому что результат ложный»); }

Сравнение разных типов

Сравнение разных типов данных может дать неожиданные результаты.

При сравнении строки с числом JavaScript преобразует строку в число при выполнении сравнения. Пустая строка преобразуется в 0. Нечисловая строка преобразуется в NaN, что всегда ложно.

Случай Значение Попытка
2 <12 настоящий Пытаться »
2 <«12» настоящий Пытаться »
2 <«Джон» ложный Пытаться »
2> «Джон» ложный Пытаться »
2 == «Джон» ложный Пытаться »
«2» <«12» ложный Пытаться »
«2»> «12″ настоящий Пытаться »
«2» == «12» ложный Пытаться »

При сравнении двух строк «2» будет больше «12», потому что (в алфавитном порядке) 1 меньше 2.

Чтобы гарантировать правильный результат, переменные должны быть преобразованы в соответствующий тип перед сравнением:

age = Число (возраст);
if (isNaN (возраст)) {
голосование = «Пожалуйста, не вводите число»;
} Другие {
votable = (возраст <18)? «Слишком молод»: «Достаточно стар»;
} Попробуй сам »

Проверьте себя с помощью упражнений

Упражнение:

Выберите правильный оператор сравнения, чтобы предупредить истину, когда x больше y.

х = 10; у = 5; предупреждение (ху);
Послать »

ИЛИ ||

ABA || Б
НАСТОЯЩИЙ НАСТОЯЩИЙ НАСТОЯЩИЙ
НАСТОЯЩИЙ ЛОЖНЫЙ НАСТОЯЩИЙ
ЛОЖНЫЙ НАСТОЯЩИЙ НАСТОЯЩИЙ
ЛОЖНЫЙ ЛОЖНЫЙ ЛОЖНЫЙ

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

Оператор || (ИЛИ)

Затем логические выражения оцениваются слева направо. Например, когда оператор ИЛИ находит истинное значение, он вернет его, дальнейших вычислений не будет. Эта функция может использоваться для поиска первого истинного выражения в списке.

var myVar = 0; var myBool = false; var myStr = «»; var myMsg = «Привет!»; var result = (myVar || myVar ++ || myBool || myStr || myMsg || ++ myVar); document.write («Переменный результат:» + результат +»Переменной результата будет «Hello!» Постфиксное приращение myVar ++ будет запущено после оценки выражения, а приращение префикса ++ myVar не будет выполняться, как раньше, || узнает правду.

! (НЕ)

Оператор НЕ обозначается восклицательным знаком !.

Синтаксис довольно прост:

результат =! ценить;

Оператор принимает аргумент и выполняет следующие действия:

  1. Сначала передайте аргумент логическому типу true / false.
  2. Затем он возвращает противоположное значение.

Например:

предупреждение (! правда); // ложное предупреждение (! 0); // настоящий

В частности, double NOT используется для преобразования значений в логический тип:

alert (!! «непустая строка»); // истинное предупреждение (!! null); // ложный

То есть первое НЕ преобразует значение в логическое и возвращает противоположное, а второе НЕ меняет его снова. В конце концов, у нас есть простое значение для логического преобразования.

Есть более подробный способ сделать то же самое: встроенная логическая функция:

alert (Boolean («непустая строка»)); // истинное предупреждение (Boolean (null)); // ложный

Приоритета НЕТ! является наивысшим из всех логических операторов, поэтому он всегда выполняется первым, перед && или ||.

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

Оператор логического ИЛИ возвращает первое истинное значение. А если истинных значений нет, то последнее ложно.

document.write («Три ложных операнда:» + (5-5 || 1> 8 || false) +»Логические выражения оцениваются слева направо. Как только оператор ИЛИ найдет истинное значение, он вернет его, дальнейших вычислений не будет. Если он не соответствует какому-либо истинному значению, он вернет последнее значение и определенно будет ложным. Посмотрим, ИЛИ вычисляет в точности все необходимые значения.

var myVar = 10; правда || ++ myVar; // ++ Код myVar не будет запускать document.write («Variable myVar:» + myVar +»Операторы присваивания в JavaScript

JavaScript включает операторы присваивания для присвоения значений переменным с использованием более короткого синтаксиса.

= присваивает значение правого операнда левому операнду
+= складывает значения левого и правого операнда и присваивает результат левому операнду
-= вычитает значение правого операнда из значения левого операнда и присваивает результат левому операнду
*= умножает значения левого и правого операнда и присваивает результат левому операнду
/= делит значение левого операнда на значение правого операнда и присваивает результат левому операнду
%= получает модуль деления левого операнда на правый операнд и присваивает полученный модуль модулю левого операнда

var x = 5, y = 10, z = 15; х = у; // x равно 10 x + = 1; // x равно 6 x — = 1; // x равно 4 x * = 5; // x равно 25 x / = 5; // x равно 1 x% = 2; // x равно 1

Источники

  • https://schoolsw3.com/js/js_comparisons.php
  • https://learn.javascript.ru/logical-operators
  • https://ru.code-basics.com/languages/javascript/lessons/logical-operators
  • http://kodesource.top/javascript/operators/logical-operator.php
  • http://komotoz.ru/uroki/javascript/logicheskie_operatory_javascript.php
  • [https://programfiles.info/javascript/operatory-v-javascript/]

Оцените статью
Блог о JavaScript