Операторы сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают true, а если нет — false.
Выражения сравнения всегда возвращают логические значения, которые широко применяются в инструкциях if, while или for для управления ходом исполнения программы.
Оператор | Описание | Пример | Результат |
---|---|---|---|
== | Равно | 10 == 20 | false |
=== | Строго равно (идентичность) | "20" === 20 | false |
!= | Не равно | 10 != 20 | true |
!== | Строго не равно | 20! == 20 | false |
> |
Больше чем | 20 > 10 | true |
>= |
Больше или равно | 20 >= 10 | true |
< |
Меньше чем | 20 < 10 | false |
<= |
Меньше или равно | 20 <= 10 | false |
Оба оператора принимают операнды любого типа и, если операнды равны, оператор равенства == возвращает true, а оператор неравенства != возвращает – false.
Получив операнды разных типов, эти операторы пытаются привести их к одному типу и сравнивают уже преобразованные значения.
При преобразовании типов операторы равенства == и неравенства != руководствуется следующими правилами:
-Если какой-либо операнд число или булево значение, то операнды преобразуются в числа, при этом true преобразуется в 1, а false преобразуется в 0.
-Если какой-либо операнд строка – второй преобразуются в строку.
-Если одно из значений представляет собой объект, а другое – число или строку, то объект преобразуется в элементарный тип.
При сравнении операндов также применяются свои правила:
-Если одно из значений равно null, а другое – undefined, то они равны.
-Значения null и undefined не преобразуются для сравнения ни в какие другие значения.
-Значение NaN считается не равным никакому другому значению, включая само себя. При его наличии оператор равенства всегда возвращает false, а оператор неравенства – true.
-Если оба операнда являются объектами, то они сравниваются, чтобы выяснить, один ли это объект. Если да, возвращается true, иначе – false.
Примечание: Значения null и undefined равны == друг другу и не равны ничему другому.
Операторы строгих равенства и неравенства, известные также как операторы идентичности === и неидентичности !==, делают то же самое, что и обычные операторы равенства и неравенства, но не преобразуют типы операндов перед их сравнением.
Оператор идентичности === возвращает true, только если операнды равны без преобразования:
-Если оба операнда имеют примитивные типы и содержат одинаковые значения, они считаются равными.
-Два операнда считаются равными, если оба ссылаются на один и тот же объект. Если же они ссылаются на разные объекты, они не равны, даже если эти объекты имеют идентичные свойства.
-Оператор идентичности считает значение NaN не равным никакому другому значению, включая само себя. При его наличии оператор идентичности всегда возвращает false.
В противоположность оператору идентичности === оператор неидентичности !== возвращает true, если без преобразования операнды не равны.
На заметку: Выражение null == undefined истинно, потому что значения равны, но null === undefined ложно, потому что типы этих значений разные.
Как работают операторы отношений «больше» >, «меньше» <, «больше или равно» >= и «меньше или равно» <= нам известно ещё из школьной математики. Каждый из этих операторов возвращает логическое значение (true или false).
Оператор больше > возвращает true, если значение левого операнда больше, чем значение правого операнда, в противном случае он возвращает false.
Оператор меньше < возвращает true, если значение левого операнда меньше, чем значение правого операнда, в противном случае он возвращает false.
Оператор больше или равно >= возвращает true, если значение левого операнда больше или равно, чем значение правого операнда, в противном случае он возвращает false.
Оператор меньше или равно <= возвращает true, если значение левого операнда меньше или равно, чем значение правого операнда, в противном случае он возвращает false.