Операторы сравнения и логические значения
В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают.
Многие операторы сравнения знакомы нам из математики:
- Больше/меньше:
a > b
,a < b
. - Больше/меньше или равно:
a >= b
,a <= b
. - Равно
a == b
. Для сравнения используется два символа равенства'='
. Один символa = b
означал бы присваивание. - «Не равно». В математике он пишется как
≠
, в JavaScript – знак равенства с восклицательным знаком перед ним!=
.
Логические значения
Как и другие операторы, сравнение возвращает значение. Это значение имеет логический тип.
Существует всего два логических значения:
true
– имеет смысл «да», «верно», «истина».false
– означает «нет», «неверно», «ложь».
Например:
Логические значения можно использовать и напрямую, присваивать переменным, работать с ними как с любыми другими:
Сравнение строк
Строки сравниваются побуквенно:
Аналогом «алфавита» во внутреннем представлении строк служит кодировка, у каждого символа – свой номер (код). JavaScript использует кодировку Unicode.
При этом сравниваются численные коды символов. В частности, код у символа Б
больше, чем у А
, поэтому и результат сравнения такой.
В кодировке Unicode обычно код у строчной буквы больше, чем у прописной.
Поэтому регистр имеет значение:
Для корректного сравнения символы должны быть в одинаковом регистре.
Если строка состоит из нескольких букв, то сравнение осуществляется как в телефонной книжке или в словаре. Сначала сравниваются первые буквы, потом вторые, и так далее, пока одна не будет больше другой.
Иными словами, больше – та строка, которая в телефонной книге была бы на большей странице.
Например:
-
Если первая буква первой строки больше – значит первая строка больше, независимо от остальных символов:
-
Если одинаковы – сравнение идёт дальше. Здесь оно дойдёт до третьей буквы:
-
При этом любая буква больше отсутствия буквы:
Такое сравнение называется лексикографическим.
Обычно мы получаем значения от посетителя в виде строк. Например, prompt
возвращает строку, которую ввел посетитель.
Числа, полученные таким образом, в виде строк сравнивать нельзя, результат будет неверен. Например:
В примере выше 2
оказалось больше 14
, потому что строки сравниваются посимвольно, а первый символ '2'
больше '1'
.
Правильно было бы преобразовать их к числу явным образом. Например, поставив перед ними +
:
Сравнение разных типов
При сравнении значений разных типов, используется числовое преобразование. Оно применяется к обоим значениям.
Например:
Тема преобразований типов будет продолжена далее, в главе Преобразование типов для примитивов.
Строгое равенство
В обычном операторе ==
есть «проблема» – он не может отличить 0
от false
:
Та же ситуация с пустой строкой:
Это естественное следствие того, что операнды разных типов преобразовались к числу. Пустая строка, как и false
, при преобразовании к числу дают 0
.
Что же делать, если всё же нужно отличить 0
от false
?
Для проверки равенства без преобразования типов используются операторы строгого равенства ===
(тройное равно) и !==
.
Если тип разный, то они всегда возвращают false
:
Строгое сравнение предпочтительно, если мы хотим быть уверены, что «сюрпризов» не будет.
Сравнение с null и undefined
Проблемы со специальными значениями возможны, когда к переменной применяется операция сравнения > < <= >=
, а у неё может быть как численное значение, так и null/undefined
.
Интуитивно кажется, что null/undefined
эквивалентны нулю, но это не так.
Они ведут себя по-другому.
- Значения
null
иundefined
равны==
друг другу и не равны чему бы то ни было ещё. Это жёсткое правило буквально прописано в спецификации языка. - При преобразовании в число
null
становится0
, аundefined
становитсяNaN
.
Посмотрим забавные следствия.
Некорректный результат сравнения null с 0
Сравним null
с нулём:
Итак, мы получили, что null
не больше и не равен нулю. А теперь…
Как такое возможно? Если нечто «больше или равно нулю», то резонно полагать, что оно либо больше, либо равно. Но здесь это не так.
Дело в том, что алгоритмы проверки равенства ==
и сравнения >= > < <=
работают по-разному.
Сравнение честно приводит к числу, получается ноль. А при проверке равенства значения null
и undefined
обрабатываются особым образом: они равны друг другу, но не равны чему-то ещё.
В результате получается странная с точки зрения здравого смысла ситуация, которую мы видели в примере выше.
Несравнимый undefined
Значение undefined
вообще нельзя сравнивать:
- Сравнения
(1)
и(2)
даютfalse
потому, чтоundefined
при преобразовании к числу даётNaN
. А значениеNaN
по стандарту устроено так, что сравнения==
,<
,>
,<=
,>=
и даже===
с ним возвращаютfalse
. - Проверка равенства
(3)
даётfalse
, потому что в стандарте явно прописано, чтоundefined
равно лишьnull
или себе и ничему другому.
Вывод: любые сравнения с
, кроме точного ===
, следует делать с осторожностью.
Желательно не использовать сравнения >= > < <=
с ними, во избежание ошибок в коде.
Итого
- В JavaScript есть логические значения
true
(истина) иfalse
(ложь). Операторы сравнения возвращают их. - Строки сравниваются побуквенно.
- Значения разных типов приводятся к числу при сравнении, за исключением строгого равенства
===
(!==
). - Значения
null
иundefined
равны==
друг другу и не равны ничему другому. В других сравнениях (с участием>
,<
) их лучше не использовать, так как они ведут себя не как0
.
Мы ещё вернёмся к теме сравнения позже, когда лучше изучим различные типы данных в JavaScript.
Операторы сравнения. HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов
Операторы сравнения. HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтовВикиЧтение
HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов
Дронов Владимир
Содержание
Операторы сравнения
Операторы сравнения сравнивают два операнда согласно определенному условию и выдают (или, как говорят программисты, возвращают) логическое значение. Если условие сравнения выполняется, возвращается значение true, если не выполняется — false.
Все поддерживаемые JavaScript операторы сравнения приведены в табл. 14.4.
Пример:
a1 = 2 < 3;
a2 = -4 > 0;
a3 = r < t;
Переменная a1 получит значение true (2 меньше 3), переменная a2 — значение false (число –4 по определению не может быть больше нуля), а значение переменной a3 будет зависеть от значений переменных r и t.
Можно сравнивать не только числа, но и строки:
a = «JavaScript»!= «Java»;
Переменная a получит значение true, т. к. строки «JavaScript» и «Java» не равны.
На двух последних операторах из табл. 14.4 — «строго равно» и «строго не равно» — нужно остановиться подробнее. Это операторы так называемого строгого сравнения. Обычные операторы «равно» и «не равно», если встречают операнды разных типов, пытаются преобразовать их к одному типу (о преобразованиях типов см. далее в этой главе). Операторы строгого равенства и строгого неравенства такого преобразования не делают, а в случае несовпадения типов операндов всегда возвращают false.
Пример:
a1 = 2 == «2»;
a2 = 2 === «2»;
Переменная a1 получит значение true, т. к. в процессе вычисления строка «2» будет преобразована в число 2, и условие сравнение выполнится. Но переменная a2 получит значение false, т. к. сравниваемые операнды принадлежат разным типам.
Данный текст является ознакомительным фрагментом.
Операции сравнения
Операции сравнения Операции сравнения используются для сопоставления операндов. В этих операциях операндами могут быть не только числа, но и строки, логические величины и объекты. В табл. 11.8 приведены все операции сравнения.Таблица 11.8. Операции сравнения В листинге 11.10
Операторы отношения и логические операторы
Операторы отношения и логические операторы Операторы отношения используются для сравнения значений двух переменных. Эти операторы, описанные в табл. П2.11, могут возвращать только логические значения true или false.Таблица П2.11. Операторы отношения Оператор Условие, при
Функции сравнения
Функции сравнения strcmpСравнивает строки. Синтаксис:int strcmp(string str1, string str2)Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:Так как сравнение идет побайтово, то регистр символов влияет на результаты сравнений.strncmpСравнивает начала
Операторы сравнения
Операторы сравнения Операторы сравнения сравнивают два операнда согласно определенному условию и выдают (или, как говорят программисты, возвращают) логическое значение. Если условие сравнения выполняется, возвращается значение true, если не выполняется — false.Все
Операторы сравнения
Операторы сравнения Операторы сравнения возвращают значение типа Boolean:• = — равно;• <> — не равно;• < — меньше;• > — больше;• <= — меньше или равно;• >= — больше или
Сравнения (Comparisons)
Сравнения (Comparisons) Библиотека обеспечивает базовые классы функциональных объектов для всех операторов сравнения языкаtemplate ‹class T›struct equal_to: binary_function‹T, T, bool› { bool operator()(const T& x, const T& y) const {return x == y;}};template ‹class T›struct not_equal_to: binary_function‹T, T, bool› { bool operator()(const T& x, const T& y) const
Процедуры сравнения
Сравнения
Сравнения Когда сравнивается индексированный столбец для определения, является ли его значение больше, равно или меньше значения константы, то значение индекса используется в таком сравнении, и несоответствующие строки не выбираются. При отсутствии индекса все
Операции сравнения
Операции сравнения Операции сравнения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам простого типа и к строкам.Операции = и <> также применяются ко всем типам. Для размерных типов по умолчанию сравниваются значения, для ссылочных типов —
Логические операторы — JavaScript — Дока
Кратко
Секция статьи «Кратко»Логические операторы помогают составлять сложные логические условия, которые часто нужны при ветвлении с помощью if
.
❗
При сравнении объектов, массивов и функций, важно учесть их особенность, так как результат сравнения таких типов данных может быть непредсказуемым. Подружиться с особенностями можно в статье «Хранение по ссылке и по значению».
Как пишется
Секция статьи «Как пишется»И,
&&
Секция статьи «И, &&»Интернет-магазин показывает цены со скидкой только зарегистрированному пользователю, сделавшему больше одной покупки.
В описании два условия, которые должны одновременно быть верными:
- пользователь должен быть зарегистрирован;
- количество покупок должно быть больше одной.
Если одно из условий, или оба сразу неверны, то цену показывать не нужно.
Именно по такому принципу работает оператор логическое И, пишется &&
. Если соединить с его помощью два выражения, то результат будет равен истине только тогда, когда оба выражения истинны:
if (isRegistered === true && orders > 1) { // показываем цены}
if (isRegistered === true && orders > 1) {
// показываем цены
}
Открыть демо в новой вкладкеОбычно для того, чтобы понять, как работают логические операторы, рисуют таблицу истинности. В ячейках — итоговое значение операции при соответствующих операндах:
&& | true | false |
---|---|---|
true | true | false |
false | false | false |
ИЛИ,
||
Секция статьи «ИЛИ, ||»Представь, что мы проверяем билеты на концерт. Пропускать нужно людей с билетами, а также тех, кто находится в списке приглашённых. Выполнение любого из этих условий гарантирует попадание на концерт.
Чтобы написать такое составное условие, воспользуйся оператором логического ИЛИ, обозначается как две вертикальные черты ||
. Логическое или вернёт true
, если хотя бы одно из условий true
.
Генерируйте гостей в демо и смотрите, как отрабатывает условие, которое записано так:
if (hasTicket || isInvited) { . .. }
if (hasTicket || isInvited) { ... }
Открыть демо в новой вкладке|| | true | false |
---|---|---|
true | true | true |
false | true | false |
НЕ
!
Секция статьи «НЕ !»Оператор «логическое НЕ» превращает true
в false
и наоборот.
Он записывается в виде восклицательного знака !
перед операндом: !операнд
. Чаще всего это переменная. Например, !my
. Операторы, которые производят операцию над одним операндом называются унарными.
Например, мы можем предлагать купить билет посетителю без билета:
if (!hasTicket) { // купи билет, дорогой!}
if (!hasTicket) {
// купи билет, дорогой!
}
На практике
Секция статьи «На практике»Сергей Минаков советует
Секция статьи «Сергей Минаков советует»🛠 Оператор «ИЛИ» (||
) можно использовать для установки значения по умолчанию, для этого следует воспользоваться следующей конструкцией:
value = value || 'Значение по умолчанию'
value = value || 'Значение по умолчанию'
Или можно использовать сокращённый вариант:
value ||= 'Значение по умолчанию'
value ||= 'Значение по умолчанию'
❗
Нужно помнить, что если в переменную записать undefined
, null
, NaN
, 0
, пустую строку или любое другое значение, которое JavaScript сможет привести к false
, то данная конструкция перезапишет его значением по умолчанию.
В следующем примере пользователю предлагается выбрать поисковой движок и записать его в переменную, но он может отказаться, и тогда мы по умолчанию установим ему Google.
let searchEngine1 = 'Яндекс'let searchEngine2searchEngine1 = searchEngine1 || 'Google'searchEngine2 = searchEngine2 || 'Google'console.log(searchEngine1)// Яндексconsole.log(searchEngine2)// Google (значение по умолчанию)
let searchEngine1 = 'Яндекс'
let searchEngine2
searchEngine1 = searchEngine1 || 'Google'
searchEngine2 = searchEngine2 || 'Google'
console.log(searchEngine1)
// Яндекс
console.log(searchEngine2)
// Google (значение по умолчанию)
Такой способ работает из-за особенности оператора «ИЛИ»: он не приводит значения к типу Boolean
, а просто возвращает то, что стоит левее или правее.
- Если левое значение можно привести к
true
, то оператор возвращает левое значение. - Если левое значение можно привести к
false
, то оператор возвращает правое значение.
console.log(null || 0)// 0console.log(0 || null)// nullconsole.log('Собака' || 'Кошка')// Собака
console.log(null || 0)
// 0
console.log(0 || null)
// null
console.log('Собака' || 'Кошка')
// Собака
В последнем примере JavaScript приводит левое значение к типу Boolean
и получает true
, из-за чего решает вернуть именно его ('Собака'
), а правое – даже не смотрит.
🛠 Оператор «И» (&&
) можно использовать в React компонентах, когда мы хотим что-то показать или спрятать в зависимости от определённого условия, для этого нужно воспользоваться следующей jsx конструкцией:
<> { condition && <p> Если condition == true, то показываем этот текст. </p> }</>
<>
{
condition &&
<p>
Если condition == true,
то показываем этот текст.
</p>
}
</>
Давайте напишем небольшой компонент, который будет выводить секретное сообщение только тем пользователям, которые ввели правильный пароль:
import React, { useState } from 'react'export default function App() { const [password, setPassword] = useState('') return ( <> <h2>Введите пароль, чтобы увидеть секрет</h2> <label> <span>Пароль</span> <input type="password" value={password} onChange={(e) => setPassword(e. target.value)} /> </label> { password === '123456' && <p>Секрет: Дока – сокращение от «документация»</p> } </> )}
import React, { useState } from 'react'
export default function App() {
const [password, setPassword] = useState('')
return (
<>
<h2>Введите пароль, чтобы увидеть секрет</h2>
<label>
<span>Пароль</span>
<input
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
</label>
{
password === '123456' &&
<p>Секрет: Дока – сокращение от «документация»</p>
}
</>
)
}
Такой способ работает из-за того, что оператор «И» не приводит значения к типу Boolean
, а просто возвращает то, что стоит левее или правее.
- Если левое значение можно привести к
true
, то оператор возвращает правое значение. - Если левое значение можно привести к
false
, то оператор возвращает левое значение.
console.log(null && 0)// nullconsole.log(0 && null)// 0console.log('Лево' && 'Право')// Право
console.log(null && 0)
// null
console.log(0 && null)
// 0
console.log('Лево' && 'Право')
// Право
JavaScript приводит левое значение к типу Boolean
и получает true
, из-за чего решает вернуть правое значение ('Право'
).
🛠 Двойное отрицание (!!
) можно использовать, если мы хотим привести значение к логическому типу данных. Такой же результат получится, если использовать функцию Boolean
.
const value = 'Непустая строка'console.log(Boolean(value))// trueconsole.log(!!value)// true
const value = 'Непустая строка'
console.log(Boolean(value))
// true
console.log(!!value)
// true
Javascript: введение в операторы сравнения
Javascript: введение в операторы сравнения — Learn. coЦели
- Объяснить различные операторы сравнения в JS
- Объяснение операторов строгого сравнения
- Использовать операторы строгого сравнения
О
Напомним, что операторы сравнения позволяют проверять отношения (равенство и идентичность) между объектами. Вы будете кодировать в js/comparison.js
. Убедитесь, что вы запускаете выучить -b
для запуска тестов.
Список
К настоящему времени вы знаете о следующих операторах сравнения:
Оператор | Описание | Пример |
---|---|---|
== | проверяет, равны ли значения двух операндов. Если да, то возвращает true | (10 == 20) неверно; поэтому возвращает false |
!= | проверяет, равны ли значения двух операндов. Если значения не равны, возвращает true | (а != б) верно; следовательно возвращает true |
> | проверяет, больше ли значение левого операнда значения правого операнда. Если левый операнд больше правого операнда, возвращает true | (10 > 20) неверно, поэтому возвращает false |
< | проверяет, меньше ли значение левого операнда значения правого операнда. Если левый операнд меньше правого операнда, возвращает true | (10 < 20) верно |
>= | проверяет, больше ли значение левого операнда или равно значению правого операнда. Если это так, возвращает true; иначе возвращает ложь | (10 >= 20) неверно |
<= | проверяет, меньше ли значение левого операнда или равно значению правого операнда. Если левый операнд меньше или равен правому операнду, возвращает true; иначе возвращает ложь | (10 <= 20) верно |
Операторы строгого и свободного сравнения
В JavaScript помимо обычных операторов сравнения имеется операторов строгого сравнения ; которые являются строгим равенством ( ===
) и строгим не равенством ( !==
).
Операторы свободного сравнения
Операторы свободного сравнения ( ==
и !=
) довольно либеральны — они преобразуют тип для соответствия друг другу. Это означает, что значения могут считаться равными, даже если они относятся к разным типам, поскольку оператор принудительно приведет один или оба оператора к одному типу (обычно числовому) перед выполнением сравнения.
Определите функцию
testFalseLooseEqualityComparison
, которая не принимает никаких параметров. В этой функции определите две переменные. Первая переменная должна хранить целое число0
, а вторая — целое число1
. Возвращаемое значение функции должно быть оценкой нечеткого сравнения на равенство (==
) двух переменных. Возвращаемое значение должно бытьfalse
, потому что0
и1
не являются одним и тем же значением.Определите функцию
testTrueLooseNonEqualityComparison
, которая не принимает никаких параметров. В этой функции определите две переменные, одна из которых хранит0
, а другая хранит1
. Возвращаемое значение функции должно быть оценкой произвольного сравнения неравенства (!=
) двух переменных. Возвращаемое значение должно бытьtrue
, потому что0
и1
не равны.Определение функции
testTrueLooseEqualityComparison
, который не принимает никаких параметров. Функция должна содержать две переменные, одна из которых хранит1
, а другая хранит"1"
. Возвращаемое значение должно быть оценкой нечеткого сравнения равенства (==
) между двумя переменными. Возвращаемое значение должно бытьtrue
, потому что в JavaScript1
и"1"
равны по значению.
Операторы строгого сравнения
С другой стороны, операторы строгого сравнения ( ===
и !==
) сравнивают равенство типов и значений.
Определите функцию
testFalseStrictEqualityComparison
, которая не принимает никаких параметров. Внутри функции определите две переменные, одна из которых хранит1
, а другая хранит"1"
. Возвращаемое значение функции должно быть результатом строгого сравнения на равенство (===
) между двумя переменными. Возвращаемое значение должно бытьfalse
, потому что1
и"1"
не являются одним и тем же типом данных.Определите функцию
testTrueStrictEqualityComparison
, которая не принимает никаких параметров. Внутри функции определите две переменные, одна из которых хранит1
, а другая хранит"1"
. Возвращаемое значение функции должно быть результатом строгого сравнения на равенство (===
) между переменной, хранящей целое число, иparseInt
значение переменной, хранящей строку.
Вот пример:
20 == '20' //=> true 20 === '20' //=> ложь
Следующее написано заглавными буквами, чтобы подчеркнуть его важность; в смешанном случае следует отметить одно незначительное исключение.
ВЫ ПОЧТИ ВСЕГДА ХОТИТЕ ИСПОЛЬЗОВАТЬ ===
или !==
.
Использование неявного приведения типов в JavaScript приводит к появлению в коде незаметных и трудно отслеживаемых ошибок. Используйте ===
и !==
. Единственным исключением является случай, когда вы имеете дело со значением, которое может быть null
или undefined
, но также может быть 0
или false
. В этом случае простой if (variable) { ... }
не сработает, потому что все вышеперечисленное ложно. Но мы можем проверить if (variable == null) { ... }
или if (variable != null) { ... }
, чтобы поймать null
и undefined
, но не 0
и ложь
.
Ресурсы
- MDN — операторы сравнения
Просмотрите операторы сравнения JavaScript на Learn.co и начните бесплатное обучение программированию.
Открой свое будущее в сфере технологий
Научись программировать.
Начало подготовки к Coding Bootcamp
Связанные темы
Основы Javascript
- Основы JS Лаборатория онлайн-покупок
- Подъем
- Хеш-файлы
006
- Intro To Comparison Operators in JS
- Strings in JS
jQuery
- jQuery Event Listeners
- jQuery Methods
- jQuery Selectors Lab
- Modifying HTML with jQuery
- Stop Propogation
Object Ориентированный Javascript
- Объектно-ориентированный Javascript
- Создание объектов в JS
- JS Tweet Shortener Lab
- JS Github API Lab
- Объектные методы в JS Lab
Узнайте о миссии школы Flatiron
Как школа Flatiron делает программистов
С новым подходом к образованию, который находится где-то между вундеркиндом-самоучкой и четырехлетней степенью в области компьютерных наук, школа Flatiron School обещает превратить студентов с небольшим опытом программирования в разработчиков.
WeWork x Flatiron School Houston Expansion
За шесть месяцев после того, как WeWork приобрела Манхэттенскую школу кодирования, она открыла филиалы в Вашингтоне, округ Колумбия, Бруклине и Лондоне. Теперь WeWork открывает четвертую школу Flatiron School, на этот раз в Хьюстоне.
Учебные курсы по программированию будут расширяться
Адам Энбар, соучредитель Flatiron School, считает, что сейчас самое время расти. «То, как меняется мир, очень похожим образом повлияло на работу и обучение. Мы думаем, что в основе образования лежит одна цель: дать людям возможность жить лучше».
Узнать. Любовь. Код.
Студенты приходят в школу Флэтайрон, чтобы изменить свою жизнь. Присоединяйтесь к нашему целеустремленному сообществу тех, кто меняет карьеру, и овладейте навыками, необходимыми для того, чтобы стать инженером-программистом или специалистом по данным.
View Our Courses
- Coding Bootcamp Prep
- Data Science Bootcamp Prep
- Intro to Ruby
- Intro to JavaScript
Find Us
Специальные возможности
Положения и условия
Кодекс поведения
Политика конфиденциальности
Операторы сравнения JavaScript — Pi My Life Up
В этом руководстве показано, как использовать операторы сравнения в языке JavaScript.
Операторы сравнения позволяют сравнивать значение левого операнда с правым операндом. Затем JavaScript вернет true
или false
в зависимости от того, верно ли это сравнение.
Операторы сравнения являются неотъемлемой частью JavaScript и помогут вам написать полезные условия для операторов if.
Одна из ключевых концепций JavaScript, которую вам нужно понять, — это разница между « свободный » и « строгий 9».0090” сравнений.
- При сравнении « свободных » JavaScript будет выполнять жонглирование типами. Проще говоря, он будет выполнять преобразования между определенными типами данных, чтобы определить, совпадают ли значения.
Например, число
1
будет соответствовать строке"1"
при использовании свободного сравнения. - Когда JavaScript выполняет сравнение « strict », переменные будут совпадать только в том случае, если типы данных совпадают.
Если типы данных различаются, сравнение вернет
false
и не считаться равным.
В таблице ниже перечислены все операторы сравнения, поддерживаемые JavaScript. Эта таблица покажет вам оператора, его имя, пример и результат сравнения.
Operator | Name | Example | Result |
---|---|---|---|
== | Equals | x == y | true if x is equal to y . Типы могут быть разными |
=== | Идентичный | x === y | true , если x равно y , и типы идентичны. |
!= | Не равно | x != y | верно , если x не равно y . Типы могут быть разными |
!== | Не идентичны | x !== y | true если x не равно y , или если типы, если разные |
< | Меньше | x | True IF x меньше y | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | . To | x <= y | true if x is less than or equal to y |
> | Greater Than | x > y | true if x is greater than y |
>= | Greater Than or Equal To | x >= y | true if x is greater than or equal to y |
Examples операторов сравнения в JavaScript
В следующих нескольких разделах мы рассмотрим, как использовать каждый поддерживаемый оператор сравнения в JavaScript.
В каждом примере объясняется, как использовать оператор и когда этот оператор возвращает значение true или false.
Оператор сравнения равенства (
==
) в JavaScript Оператор сравнения равенства ( ==
) в JavaScript позволяет проверить, равны ли два значения. Типы данных этих двух значений могут быть разными, пока JS может жонглировать ими, чтобы они были одинаковыми.
Чтобы продемонстрировать это, давайте рассмотрим следующий фрагмент кода. Каждый из вызовов « console.log()
» содержит сравнение, показывающее различное использование оператора равенства.
- В первом сравнении мы просто сравниваем, равно ли число
10
10
. Поскольку эти значения равны, оператор вернетtrue
. - В этом втором журнале мы используем оператор сравнения, чтобы проверить, равно ли число
10
строке"10"
.Хотя это разные типы, оператор « равно » позволяет JavaScript жонглировать типами, чтобы увидеть, совпадают ли значения. Это сравнение вернет true, так как JavaScript может преобразовать строку
"10"
до10
. - Окончательный журнал показывает, что использование оператора сравнения для сравнения двух значений не совпадает.
Поскольку
10
не равно11
, этот оператор вернетfalse
.
Ниже вы можете увидеть результат каждого из наших сравнений в JavaScript.
Идентичный оператор (
===
) Идентичный оператор ( ===
) — это строгая альтернатива JavaScript оператору сравнения равенства. С помощью этого оператора значения будут считаться одинаковыми только в том случае, если они равны и имеют один и тот же тип данных.
JavaScript не будет выполнять никакого жонглирования типами данных для сравнения значений.
Давайте возьмем те же три вызова « console.log()
», которые мы использовали в предыдущем примере, чтобы продемонстрировать это изменение поведения.
- Первый пример вернет true, так как оба значения равны и оба являются числами.
- Во втором примере идентичный оператор JavaScript вернет
false
.Этот оператор возвращает false, поскольку типы данных не совпадают. Один — строка, другой — число. Строгое сравнение не позволяет JavaScript жонглировать типами данных, чтобы увидеть, совпадают ли значения.
- Для последнего примера JavaScript по-прежнему будет возвращать
false
для этого сравнения.Идентичный оператор сравнения возвращает false, поскольку
10
не равно11
.
Из приведенных ниже результатов вы можете увидеть, как идентичный оператор JavaScript обрабатывает каждое сравнение.
Оператор сравнения не равно в JavaScript (
!=
) Оператор сравнения не равно ( !=
) выполняет противоположное оператору «равно» ( =
). В JavaScript вы будете использовать этот оператор, чтобы увидеть, не совпадают ли два значения. Это сравнение сделано свободно, поэтому типы данных могут быть разными.
Поскольку оператор сравнения не равно в JavaScript даст результат, противоположный оператору равенства, давайте воспользуемся теми же примерами, что и раньше.
После запуска приведенного выше примера вы должны получить следующий результат. Этот результат показывает, как JavaScript оценивал каждое использование оператора «не равно».
Неидентичный оператор (
!==
) Неидентичный оператор сравнения ( !==
) в JavaScript очень похож на оператор не равно. Однако не идентичный оператор выполняет строгое сравнение. Это означает, что если типы данных различаются, JavaScript вернет true
.
Чтобы продемонстрировать это более строгое поведение, давайте возьмем тот же пример, который мы использовали в предыдущих трех примерах.
- Не идентичный оператор все равно вернет
false
для первого примера. Это связано с тем, что10
равно10
и имеют одинаковые типы данных. - Во втором примере этот оператор вернет
true
. Этот ответ связан с тем, что типы данных значений различаются. - В последнем примере неидентичный оператор все равно вернет
true
. Это потому, что10
не равно11
.
Вы можете увидеть, как этот оператор сравнения ведет себя в JavaScript, посмотрев на результат ниже. Вы можете увидеть, как оценивалось каждое выражение.
Оператор сравнения меньше чем в JavaScript (
<
) Оператор сравнения меньше чем в JavaScript ( <
) позволяет вам сравнивать, меньше ли одно значение, чем другое.
- Этот оператор вернет
true
только в том случае, если значение на меньше сравниваемого значения на . - Если значения равны, возвращается
false
.
Чтобы продемонстрировать, как работает этот оператор сравнения, мы не будем использовать его в следующих выражениях. Мы будем регистрировать эти выражения, чтобы увидеть, как JavaScript оценивает каждую операцию, истина
или ложь
.
- Для первого сравнения мы проверяем, меньше ли
10
20
.Так как
10
меньше20
, то оператор меньшего размера вернетtrue
. - Во-вторых, проверяем, меньше ли
10
на , чем10
.Поскольку эти значения равны, оператор вернет
false
. - При окончательном сравнении проверяем,
10
на меньше, чем5
.Поскольку
10
больше, чем5
, оператор "меньше чем" вернетfalse
.
Ниже вы можете увидеть результат меньшего оператора сравнения в JavaScript. JavaScript оценил только первый пример как true
.
Оператор "меньше или равно" (
<=
) Оператор "меньше или равно" ( <=
) полезен для сравнения значений, когда вы хотите, чтобы оператор возвращал верно
, даже если значения совпадают.
- Если значения равны, оператор вернет
true
. - Оператор вернет
true
, если значение слева меньше значения справа.
Давайте рассмотрим три быстрых примера, чтобы показать, как работает оператор сравнения меньше или равно в JavaScript.
- Первое сравнение вернет
true
. Это связано с тем, что10
меньше20
. - Наше второе использование оператора меньше или равно в JavaScript также вернет
true
. Это потому, что10
равно10
. - Окончательное сравнение вернет
false
, поскольку10
больше, чем5
.
Ниже вы можете увидеть результат вышеприведенных операторов сравнения в JavaScript.
Оператор больше чем (
>
) Оператор больше чем в JavaScript ( >
) противоположен оператору «меньше». Следовательно, этот оператор сравнения вернет true, если левый операнд больше правого.
Если значения равны, то оператор больше возвращает false
.
В приведенном ниже примере вы можете увидеть, как оператор сравнения «больше чем» работает в JavaScript.0015 верно .
20
равно 20
, второе сравнение вернет false
. 15
меньше 20
, поэтому окончательное сравнение также вернет false
.Ниже вы можете увидеть результат вышеописанного использования оператора сравнения больше, чем в JavaScript.
Оператор сравнения больше или равно (
>=
) в JavaScript Последний оператор сравнения JavaScript, который мы будем изучать, — это оператор сравнения больше или равно ( >=
).
Этот оператор вернет true
, когда значение слева больше или равно значению справа.
Чтобы продемонстрировать поведение этого оператора, воспользуемся теми же примерами, что и в предыдущем операторе. Благодаря тому, что мы использовали функцию « console. log()
», мы сможем увидеть, что возвращает каждое сравнение.
- Первый пример вернет
true
, так как20
больше10
. - Поскольку мы используем оператор больше или равно, второй пример также вернет
true
. Причина этого в том, что20
равно20
. - Окончательное сравнение вернет
false
, поскольку15
не больше или равно25
.
В приведенном ниже тексте показан результат, который вы должны получить из приведенного выше примера JavaScript.
Заключение
В этом руководстве мы показывали вам различные операторы сравнения, поддерживаемые JavaScript.
Каждый оператор сравнения невероятно полезен и является основной частью написания полезных условных операторов if.
Пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы об использовании операторов сравнения в JavaScript.
У нас также есть множество других руководств по JavaScript, если вы хотите узнать больше. В дополнение к нашим руководствам по JS у нас есть множество руководств по другим языкам программирования.
Javascript: Как использовать операторы сравнения
Узнайте о различиях в JavaScript между операторами сравнения == и != (=== и !==) и о том, как они могут повлиять на ваш код.
В JavaScript есть два типа операторов сравнения: слабое или абстрактное равенство (==) и строгое равенство (===). Рекомендуется всегда использовать последний.
Строгое сравнение (с использованием, ===) допустимо только в том случае, если операнды одного типа и содержимое обоих совпадает. Абстрактное сравнение (с использованием, ==) более распространено, но оно преобразует (преобразует) операнды перед сравнением, и это может вызвать бесчисленное количество проблем.
В конце статьи есть калькулятор с операторами сравнения Javascript, чтобы вы поняли концепцию на практике.
Особенности сравнений:
- Две строки строго равны, если они имеют одинаковую последовательность символов одинаковой длины и в соответствующих позициях.
- Когда они численно равны, два числа строго равны (имеют одинаковое числовое значение). NaN ничему не равен, но NaN включен. Положительные и отрицательные нули совместимы друг с другом.
- Если оба
истинны
или обаложны
, два логических операнда строго равны. - Ни для строгого, ни для слабого сравнения два различных объекта никогда не будут равны.
- Выражение сравнения объектов верно, только если операнды ссылаются на один и тот же объект.
-
Null
иundefined
строго равны сами себе и абстрактно равны друг другу.
Оператор сравнения JavaScript
Равенство (==)
Оператор равенства или слабости преобразует операнды во время сравнения (временно). Если они не одного вида, после преобразования производится строгое сравнение. Если оба операнда являются объектами, то JavaScript сравнивает внутренние ссылки, которые совпадают, если операнды памяти ссылаются на один и тот же объект.
1 == 1 // правда '1' == 1 // правда 1 == '1' // правда 0 == ложь // правда 0 == ноль // ложь 0 == не определено // ложь null == undefined // true
Неравенство (!=)
Оператор неравенства работает очень похоже на оператор равенства выше, разница в том, что он возвращает true
, если операнды разные. Преобразование типов также происходит здесь.
1 != 1 // ложь "1" != 1 // ложь 1 != '1' // ложь 0 != ложь // ложь 0 != ноль // правда 0 != не определено // правда null != не определено // ложь
Идентичность / строгое равенство (===)
Оператор строгого равенства возвращает true, если операнды строго одинаковы, т. е. содержат одно и то же значение и относятся к одному типу без преобразования типов.
1 === 1 // правда "1" === 1 // ложь 1 === '1' // ложь 0 === ложь // ложь 0 === ноль // ложь 0 === не определено // ложь null === undefined // false
Неидентичность/строгое неравенство (!==)
Оператор неидентичности возвращает значение true, если операнды не равны и/или не относятся к одному и тому же типу.
1 !== 1 // ложь "1" !== 1 // правда 1 !== '1' // правда 0 !== ложь // правда 0 !== ноль // правда 0 !== не определено // правда null !== undefined // true
Сравнение между объектами
Если вы работаете с объектами, здесь простые объекты, давайте пока не будем иметь дело с вложенными объектами, если вам нужно больше узнать о вложенных объектах, вы можете посетить этот пост с 3 мощными способами доступа к свойствам в объектах Javascript. Ограниченное и абстрактное сравнение работает иначе, чем примитивные типы, как я уже упоминал.
Для ссылочных типов оператор сравнения JavaScript ==
и ===
действуют согласованно друг с другом. Следуя правилу, оба оператора возвращают false, потому что даже если они имеют одинаковые значения, у них разные адреса памяти, что делает их разными объектами.
[1,2,3] == [1,2,3]; // ЛОЖЬ [1,2,3] === [1,2,3]; // ЛОЖЬ { х: 1, у: 2 } == { х: 1, у: 2 } // ложь { x: 1, y: 2 } === { x: 1, y: 2 } // false
И, конечно же, есть особый случай.