Files
frontend-docs/docs/javascript/01-base/05-compare-ops.md
2025-03-25 16:40:25 +03:00

44 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.
🚀 **Источник: [https://learn.javascript.ru/comparison](https://learn.javascript.ru/comparison)**