Операторы сравнения сравнивают значения двух операндов и оценивают, является ли утверждение, которое они формируют, true или false . В следующем примере используется оператор строгого равенства ( === ) для сравнения двух операндов: выражения 2 + 2 и значения 4 . Поскольку результат выражения и числовое значение 4 одинаковы, это выражение имеет значение true :
2 + 2 === 4 > true Тип принуждения и равенства
Двумя наиболее часто используемыми операторами сравнения являются == для свободного равенства и === для строгого равенства. == выполняет свободное сравнение двух значений, принуждая операнды к совпадающим типам данных, если это возможно. Например, 2 == "2" возвращает true , даже если сравнение выполняется между числовым значением и строковым значением.
2 == 2 > true 2 == "2" > true То же самое относится и к != , который возвращает true только в том случае, если сравниваемые операнды не являются примерно равными.
2 != 3 > true 2 != "2" > false Строгие сравнения с использованием === или !== не выполняют приведение типов. Чтобы строгое сравнение дало результат true , сравниваемые значения должны иметь один и тот же тип данных. По этой причине 2 == "2" возвращает true , а 2 === "2" возвращает false :
2 === 3 > false 2 === "2" > false Чтобы устранить любую двусмысленность, которая может возникнуть в результате автоматического приведения, используйте === везде, где это возможно.
| Оператор | Описание | Использование | Результат |
|---|---|---|---|
| === | Строго равно | 2 === 2 | истинный |
| !== | Не строго равны | 2 !== "2" | истинный |
| == | Равный (или «приблизительно равный») | 2 == "2" | истинный |
| != | Не равно | 2 != "3" | истинный |
| > | Больше, чем | 3 > 2 | истинный |
| >= | Больше или равно | 2 >= 2 | истинный |
| < | Меньше, чем | 2 < 3 | истинный |
| <= | Меньше или равно | 2 <= 3 | истинный |
Правда и ложь
Все значения в JavaScript неявно имеют true или false и могут быть приведены к соответствующему логическому значению, например, с помощью компаратора «свободного равенства». Ограниченный набор значений приводит к false :
-
0 -
null -
undefined -
NaN - Пустая строка (
"")
Все остальные значения приводятся к true , включая любую строку, содержащую один или несколько символов и все ненулевые числа. Их обычно называют «истинными» и «ложными» ценностями.
"My string" == true > true 100 == true > true 0 == true > false Логические операторы
Используйте логические операторы И ( && ), ИЛИ ( || ) и НЕ ( ! ) для управления потоком сценария на основе оценки двух или более условных операторов:
2 === 3 || 5 === 5; > true 2 === 2 && 2 === "2" > false 2 === 2 && !"My string." > false Логическое выражение NOT ( ! ) отменяет истинное или ложное значение операнда, оценивая его как true , если операнд оценивается как false , и false , если операнд оценивается как true :
true > true !true > false !false > true Использование логического оператора NOT ( ! ) перед другим типом данных, например числом или строкой, приводит это значение к логическому значению и меняет истинное или ложное значение результата.
"string" > "string" !"string" > false 0 > 0 !0 > true Обычной практикой является использование двух операторов NOT для быстрого приведения данных к соответствующему логическому значению:
!!"string" > true !!0 > false Логические операторы AND и OR сами по себе не выполняют никакого приведения. Они возвращают значение одного из двух оцениваемых операндов, причем выбранный операнд определяется этой оценкой.
Логическое И ( && ) возвращает первый из двух своих операндов, только если этот операнд имеет значение false , а второй операнд — в противном случае. В сравнениях, которые оцениваются как логические значения, он возвращает true только если операнды с обеих сторон логического И оцениваются как true . Если какая-либо из сторон оценивает значение false , она возвращает false .
true && false > false false && true > false false && false > false true && true > true Когда && используется с двумя нелогическими операндами, первый операнд возвращается без изменений, если его можно привести к значению false . Если первый операнд можно привести к значению true , второй операнд возвращается без изменений:
false && "My string" > false null && "My string" > null "My string" && false > false "My string" && "My second string" > "My second string" 2 === 2 && "My string" > "My string" Логическое ИЛИ ( || ) возвращает первый из двух своих операндов, только если этот операнд имеет значение true , а второй операнд — в противном случае. В сравнениях, которые оцениваются как логические значения, это означает, что оно возвращает true , если любой операнд оценивается как true , а если ни одна из сторон не оценивается как true , возвращается false :
true || false > true false || true > true true || true > true false || false > false При использовании || с двумя нелогическими операндами он возвращает первый операнд без изменений, если его можно привести к значению true . Если первый операнд можно привести к значению false , второй операнд возвращается без изменений:
false || "My string" > "My string" null || "My string" > "My string" "My string" || false > "My string" "My string" || "My second string" > "My string" 2 === 2 || "My string" > true Нулевой оператор объединения
Представленный в ES2020 «нулевой оператор объединения» ( ?? ) возвращает первый операнд только в том случае, если этот операнд имеет какое-либо значение, кроме null или undefined . В противном случае он возвращает второй операнд.
null ?? "My string" > "My string" undefined ?? "My string" > "My string" true ?? "My string"; > true ?? аналогично логическому ИЛИ, но более строго в том, как оценивается первый операнд. || возвращает второй операнд для любого выражения, которое можно привести к значению false , включая undefined и null . ?? возвращает второй операнд только в том случае, если первый операнд строго равен null или undefined , даже если его можно привести к false :
0 ?? "My string"; > 0 false ?? "My string"; > false undefined ?? "My string"; > "My string" Логические операторы присваивания
Используйте операторы присваивания, чтобы присвоить значение второго оператора первому оператору. Наиболее распространенным примером этого является одиночный знак равенства ( = ), используемый для присвоения значения объявленной переменной .
Используйте логические операторы присваивания, чтобы условно присвоить значение переменной на основе истинного или ложного значения этой переменной.
Логический оператор присваивания И ( &&= ) оценивает второй операнд и присваивает первому операнду if, только если первый операнд будет иметь значение true — фактически, «если первый операнд истинен, вместо этого присвойте ему значение второго операнда :"
let myVariable = false; myVariable &&= 2 + 2; > false myVariable = true; myVariable &&= 2 + 2; > 4 Истинное или ложное значение первого операнда определяет, будет ли выполнено присваивание. Однако попытка оценить первый операнд с помощью оператора сравнения приводит к получению логического значения true или false , которому невозможно присвоить значение:
let myVariable = 5; myVariable > 2 &&= "My string" > SyntaxError: Invalid left-hand side in assignment Логический оператор присваивания ИЛИ ( ||= ) оценивает второй операнд и присваивает его первому операнду, если первый операнд оценивается как false - фактически, «если первый операнд является ложным, вместо этого присвойте ему значение второго операнда:»
let myVariable = false; myVariable ||= 2 + 2; > 4 myVariable = true; myVariable ||= 2 + 2; > true Проверьте свое понимание
Какой оператор указывает «строго равно»?
======!=