Прикладной код

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

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

Описание

Операндами операторов сравнения могут быть численные и строковые значения. Строки сравниваются, исходя из стандартного лексикографического порядка при использовании Unicode.

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

Оператор

Описание

Примеры, возвращающие true при x=3, y=4

Равно (==)

Если два операнда не одного типа, JavaScript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку

3 == x
"3" == x
3 == '3'

Не равно (!=)

Возвращает true, если операнды не равны. Если операнды имеют разный тип, JavaScript преобразовывает.

x != 4
x != "5"

Строго равно (===)

Возвращает true, если операнды строго равны (см. выше), без преобразования типов.

3 === x

Строго не равно (!==)

Возвращает true, если операнды не являются строго равными (см. выше) или имеют разные типы.

y !== 3
3 !== '3'

Больше (>)

Возвращает true, если левый операнд больше правого.

y > x

Больше или равно (>=)

Возвращает true, если левый операнд больше правого или равен ему.

y >= x
x >= 3

Меньше (<)

Возвращает true, если левый операнд меньше правого.

x < y

Меньше или равно (<=)

Возвращает true, если левый операнд меньше правого или равен ему.

x <= y
y <= 5

Комментарии

JavaScript допускает как строгое сравнение, так и сравнение с приведением типов. Для строгого сравнения оба операнда должны иметь одинаковый тип.

Особенности сравнений:

  • Две строки строго равны, если имеют одинаковую последовательность символов;
  • Два числа строго равны, если равны в обычном смысле слова. +0 строго равен -0;
  • NaN строго не равно ничему, включая NaN;
  • Два булевых операнда строго равны, если они оба true или false;
  • Два операнда-объекта строго равны, если являются ссылками на один и тот же общий объект;
  • Null и Undefined равны ==, но не строго равны ===.

Стандартные операторы равенства (== и !=) сравнивают два операнда независимо от их типа. Строгое равенство (=== и !==) производит сравнения операндов одинакового типа. Используйте строгое равенство, если операнды должны иметь одинаковый тип и значение. Если этого не требуется - используйте обычные операторы равенства. Они позволяют проверить равенство операндов, даже если они разного типа.

При конвертации типов JavaScript преобразует String, Number, Boolean и Object следующим образом:

  • При сравнении числа и строки, строка преобразуется в числовое значение. JavaScript при этом получает значение числа из строкового литерала: "123" == 123.
  • Если один из операндов - булевый (логический), JavaScript пытается получить соответствующее значение для объекта. Он преобразует объект к элементарному значению, строке или числу, используя методы valueOf и toString. Если преобразовать объект не удается - генерируется ошибка выполнения.