--- sidebar_position: 5 --- # Операторы сравнения ***Результат сравнения имеет логический тип*** - Больше/меньше: 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.