Вы знаете операторы сравнения из математического класса, но давайте освежим вашу память:
Оператор больше (a > b) возвращает true, если левый операнд больше правого.
Синтаксис:
a > b
Пример использования оператора больше:
Оператор меньше (a < b) возвращает true, если левый операнд меньше правого.
Синтаксис:
a < b
Пример использования оператора меньше:
Оператор больше или равно (a >= b) возвращает true, если левый операнд больше или равен правому.
Синтаксис:
a >= b
Пример использования оператора больше или равно:
Оператор меньше или равно (a <= b) возвращает true, если левый операнд меньше или равен правому.
Синтаксис:
a <= b
Пример использования оператора меньше или равно:
Оператор равенства (a == b) преобразует операнды, если они не одного типа, затем применяет строгое сравнение. Если оба операнда являются объектами, JavaScript сравнивает внутренние ссылки, которые равны, когда операнды ссылаются на один и тот же объект в памяти.
Синтаксис:
a == b
Пример использования оператора равенства:
Если операнды не равны, то оператор неравенства (!=) возвращает true. Когда два операнда не одного типа, JavaScript пытается преобразовать операнды к подходящему типу для сравнения.
Если оба операнда являются объектами, JavaScript сравнивает ссылки, которые не равны, когда операнды ссылаются на разные объекты в памяти.
Синтаксис:
a != b
Пример использования оператора неравенства:
Boolean является результатом
Сравнение, как и все другие операции, возвращает значение. В этом случае это boolean.
- true - это «да», «верно» или «правда»;
- false - это «нет», «не так» или «не правда».
Результат сравнения можно присвоить переменной, как любое другое значение:
Сравнение строк
JavaScript использует «словарный» или «лексикографический» порядок для сравнения строк. Другими словами, строки сравниваются посимвольно.
Пример сравнения строк:
В примерах сравнение 'Z' > 'A' дает результат на первом шаге, в то время как строки "Want" и "Walk" сравниваются посимвольно:
- W такое же как W.
- a такое же как a.
- n больше чем l.
Сравнение разных типов
Для сравнения значений разных типов, JavaScript преобразует значения в числа.
Для булевых значений, true становится 1, false становится 0.
Строгое равенство
Обычная проверка равенства == имеет проблему: она не может отличить 0 от false:
Мы сталкиваемся с той же проблемой при пустой строке:
Сравнение с null и undefined
Неинтуитивное поведение проявляется, когда null или undefined сравниваются с другими значениями. Для строгой проверки равенства ===. Эти значения различаются, так как каждое из них является разным типом.
Для нестрогой проверки ==
Эти два значения образуют «сладкую пару», то есть они равны друг другу.
Разница между == и ===
JavaScript имеет два визуально похожих, но очень разных способа проверки равенства:
== (Оператор двойного равенства): оператор равенства или абстрактного сравнения
=== (Оператор тройного равенства): оператор тождественности или строгого сравнения
Вот различия между == и ===:
- перед показом сравнения == преобразует значения переменных одного типа;
- === не производит никакого преобразования типов и возвращает true только в том случае, если значения и типы идентичны для двух сравниваемых переменных.
Для математических и других сравнений < > <= >=
Null/undefined преобразуются в числа, здесь null становится 0, undefined становится NaN.
Мы представляем вам некоторые забавные вещи, которые происходят, когда мы применяем эти правила. А также, как не попасть в ловушку с ними.
Странный результат: null против 0
Пример сравнения null с нулем:
С математической точки зрения это странно. Последний результат говорит, что "null больше или равно нулю", это означает, что в одном из сравнений выше должно быть истинно, но оба они ложные.
Основная причина в том, что проверка на равенство == и сравнения > < >= <= работают по-разному: сравнения преобразуют null в число, рассматривая его как 0. Поэтому (3) null >= 0 истинно, а (1) null > 0 ложно.
Но с другой стороны, проверка на равенство == для undefined и null определена без каких-либо преобразований. Они равны друг другу и не равны ничему другому, поэтому (2) null == 0 ложно.
Несопоставимый undefined
Мы не можем сравнивать значение undefined с другими значениями:
Причины, по которым мы получаем эти результаты, следующие:
- Сравнения (1) и (2) возвращают false, так как undefined преобразуется в NaN, что является особым числовым значением, которое возвращает false для всех сравнений.
- Проверка на равенство (3) возвращает false, так как здесь undefined равно только null, undefined и ни одному другому значению.
Время Викторины: Проверьте Свои Навыки!
отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.