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

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

  1. Больше/меньше: a > b, a < b.
  2. Больше/меньше или равно: a >= b, a <= b.
  3. Равно: a == b (нестрогое равенство; помните, что один знак равенства a = b означает присваивание). 
  4. Равно: a === b (строгое равенство, предпочтительно для использования! см. ниже).
  5. Не равно: a != b, a !== b (нестрогое и строгое неравенство; в математике обозначается символом ≠).

Операторы сравнения, как и другие операторы, возвращают значение. Но это значение имеет логический тип:

  • true – означает «да», «верно», «истина»;
  • false – означает «нет», «неверно», «ложь».

Следующие значения являются ложными:

  • false
  • undefined
  • null
  • 0 (ноль)
  • NaN
  • пустая строка ( "" ).

Все остальные значения при передаче в условное выражение, включая все объекты, будут восприняты как ИСТИНА (TRUE).

Примеры

[свернуть]

Результат сравнения можно присвоить переменной, как и любое значение:

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

Cтроки в JavaScript сравниваются посимвольно (используется «алфавитный» или «лексикографический» порядок), при этом:

  • используется кодировка Unicode, а не настоящий алфавит;
  • имеет значение регистр символов (заглавная "A" меньше "a", так как строчные буквы имеют больший код в Unicode).

Алгоритм сравнения строк в JS:

  1. Сравниваются первые символы строк.
  2. Если первый символ первой строки больше (меньше), чем первый символ второй, то первая строка больше (меньше) второй.
  3. Если первые символы равны, то таким же образом сравниваются вторые символы строк.
  4. Сравнение продолжается, пока не закончится одна из строк. Большей считается более длинная строка.
  5. Если обе строки заканчиваются одновременно, то они равны.

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

При сравнении значений разных типов JavaScript приводит каждое из них к числу (number).

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

Отличие нестрого сравнения и строгого сравнения

При нестрогом сравнении возможна ситуация, когда два значения разных типов равны, при этом:

  • одно из них как логическое значение - true;
  • другое - false.

Таким образом, использование обычного сравнения == может вызывать проблемы (например, оно не отличает 0 от false):

Для исключения подобной ситуации используют оператор строгого равенства ===, который  проверяет равенство без приведения типов.

Другими словами, если a и b имеют разные типы, то проверка a === b немедленно возвращает false без попытки их преобразования.

[свернуть]

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

Специальное правило языка JavaScript:

  1. При строгом равенстве === значения null и undefined различны, так как различны их типы.
  2. При нестрогом равенстве == значения null и undefined равны друг другу и не равны никаким другим значениям. 
  3. При использовании математических операторов и других операторов сравнения < > <= >= значения null и undefined преобразуются к числам:
    • null - 0;
    • undefined – NaN.

Сравнение null и 0:

Несравнимое значение undefined:

Значение undefined несравнимо с другими значениями:

ВАЖНО! К любому сравнению с undefined или null, кроме строгого равенства ===, нужно относиться с осторожностью! Не используйте сравнения >= > < <= с переменными, которые могут принимать значения null или undefined, если вы не уверены в том, что делаете. Если переменная может принимать эти значения, то добавьте для них отдельные проверки.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.