Операторы сравнения
Описание, примеры
Операндами операторов сравнения могут быть численные и строковые значения. Строки сравниваются, исходя из стандартного лексикографического порядка при использовании Unicode.
Яваскрипт допускает как строгое сравнение, так и сравнение с приведением типов. Для строгого сравнения оба операнда должны иметь одинаковый тип и:
- Две строки строго равны, если состоят из одинаковой последовательности символов
- Два числа строго равны, если равны в обычном смысле слова.
+0
строго равен-0
. NaN
строго не равно ничему, включаяNaN
- Два булевых операнда строго равны, если они оба
true
илиfalse
- Два операнда-объекта строго равны, если являются ссылками на один и тот же общий объект
Null
иUndefined
равны==
, но не строго равны===
Следующая таблица описывает операторы сравнения:
Оператор | Описание | Примеры, возвращающие true при var1=3, var2=4 |
---|---|---|
Равно (== ) |
Если два операнда не одного типа, javascript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку |
|
Не равно (!= ) |
Возвращает true , если операнды не равны. Если операнды имеют разный тип, javascript преобразовывает. |
|
Строго равно (=== ) |
Возвращает true , если операнды строго равны (см. выше), без преобразования типов. |
|
Строго не равно (!== ) |
Возвращает true , если операнды не являются строго равными (см. выше) или имеют разные типы. |
|
Больше (> ) |
Возвращает true , если левый операнд больше правого. |
|
Больше или равно (>= ) |
Возвращает true , если левый операнд больше правого или равен ему. |
|
Меньше (< ) |
Возвращает true , если левый операнд меньше правого. |
|
Меньше или равно (<= ) |
Возвращает true , если левый операнд меньше правого или равен ему. |
|
Использование операторов сравнения
Стандартные операторы равенства (== и !=) сравнивают два операнда безотносительно их типа. Строгое равенство (=== и !==) производит сравнения операндов одинакового типа. Используйте строгое равенство, если операнды должны иметь одинаковый тип и значение. В ином случае, используйте обычные операторы равенства, которые позволяют проверить равенство операндов, даже если они разного типа.
При конвертации типов яваскрипт преобразует String, Number, Boolean и Object следующим образом:
- При сравнении числа и строки, строка преобразуется в числовое
значение. Яваскрипт при этом получает значение числа из строкового
литерала:
"123" == 123
. - Если один из операндов - булевый, то он преобразуется к 1, если он
true
и к +0, если онfalse
- Если объект сравнивается с числом или строкой, яваскрипт пытается
получить соответствующее значение для объекта. Он преобразует объект к
элементарному значению, строке или числу, используя методы
valueOf
иtoString
. Если преобразовать объект не удается - генерируется ошибка выполнения.