Skip to main content

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

Результат сравнения имеет логический тип

  • Больше/меньше: a > b, a < b.
  • Больше/меньше или равно: a >= b, a <= b.
  • Равно: a == b. Обратите внимание, для сравнения используется двойной знак равенства ==. Один знак равенства a = b означал бы присваивание.
  • Не равно. В математике обозначается символом ≠, но в JavaScript записывается как a != b.

Сравнение строк

Чтобы определить, что одна строка больше другой, JavaScript использует «алфавитный» или «лексикографический» порядок.
Другими словами, строки сравниваются посимвольно.

Используется кодировка Unicode, а не настоящий алфавит

Алгоритм сравнения двух строк довольно прост:

  • Сначала сравниваются первые символы строк.
  • Если первый символ первой строки больше (меньше), чем первый символ второй, то первая строка больше (меньше) второй. Сравнение завершено.
  • Если первые символы равны, то таким же образом сравниваются уже вторые символы строк.
  • Сравнение продолжается, пока не закончится одна из строк.
  • Если обе строки заканчиваются одновременно, то они равны. Иначе, большей считается более длинная строка.

Сравнение разных типов

Использование обычного сравнения == может вызывать проблемы. Это происходит из-за того, что операнды разных типов преобразуются оператором == к числу. В итоге, и пустая строка, и false становятся нулём.

Оператор строгого равенства === проверяет равенство без приведения типов.

Сравнение с null и undefined

Поведение null и undefined при сравнении с другими значениями — особое:

При строгом равенстве ===
Эти значения различны, так как различны их типы.

При нестрогом равенстве ==
Эти значения равны друг другу и не равны никаким другим значениям. Это специальное правило языка.

При использовании математических операторов и других операторов сравнения < > <= >= Значения null/undefined преобразуются к числам: null становится 0, а undefined – NaN.

🚀 Источник: https://learn.javascript.ru/comparison