Операторы сравнения JavaScript
May 12, 2015
В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают.
Операторы сравнения возвращают логическое значение. Таких значений может быть только два:
Логические значения можно присваивать переменным явно:
Можно присвоить переменной логическое значение как результат операции (сравнения):
Сравнение строк
Строки сравниваются побуквенно, слева-направо. Берутся две строки и начинается сравнение. Берется первый символ первой строки и сравнивается с первым символом второй строки. Если они равны, то берутся второй символ первой строки и сравнивается со вторым символом второй строки.
И так последовательно производится сравнение строк до того момента, пока не случится так, что определенный символ первой строки неравен соответствующему символу второй строки.
На этом дальнейшее сравнение строк прекращается и делается вывод, какая строка больше или меньше другой на основании того, больше или меньше соответствующие символы этой строки.
При сравнении строк соблюдаются определенные правила. Само сравнение букв (символов) производится на основании численных кодов символов, у каждого символа есть свой численный код.
Ниже приведены примеры (как же без них?), иллюстрирующие сравнение строк.
Первый символ первой строки больше первого символа второй строки, дальнейшее сравнение прекращается и делается вывод, что первая строка больше второй строки:
В этом примере сравнение идет последовательно (символ в символ) вплоть до третьего по порядку символа, на котором сравнение прерывается, так как символ “c” по числовому значению больше символа “н”. На основании этого делается вывод, что первая строка “Вася” больше второй строки “Ваня”:
Любая буква (символ) больше отсутствия буквы. Например, первая строка больше второй, так как буква “е” в первой строке больше отсутствия таковой во второй строке:
Интересный пример сравнения связан обработкой введенных пользователем данных. Все данные, вводимые пользователем на странице, являются строковым типом. Поэтому сравнивать их, не выполнив предварительное преобразование типов, нельзя. Например:
Сравнение разных типов
Если производится сравнение данных различного типа, то JavaScript производит автоматическое (правильно такое преобразование называется неявным преобразованием) преобразование всех данных к числовому типу. И тогда производится сравнение чисел.
Строковый тип “34” приводится к числовому типу (числу) 34 и производится сравнение между числом 34 и числом 33:
Может понадобиться ситуация, когда нужно производить сравнение данных без автоматического преобразования типов. Другими словами, если в операции сравнения присутствует строка, то она должна оставаться строкой; если булев тип, то он должен оставаться булевым типом.
Если тип разный, то операция сравнения всегда возвращает значение false :
Строгое сравнение предпочтительно, если мы хотим быть уверены, что «сюрпризов» не будет.
Данная статья является пересказом соответствующего материала с ресурса learn.javascript.ru и не претендует на оригинальность.
JavaScript Сравнения и логические операторы
Операторы сравнения
Операторы сравнения используются в логических операторах для определения равенства или различия между переменными или значениями.
Как это можно использовать
Операторы сравнения могут использоваться в условных операторах для сравнения значений и принятия мер в зависимости от результата:
Логические операторы
Логические операторы используются для определения логики между переменными или значениями.
| Оператор | Описание | Пример | Попробовать |
|---|---|---|---|
| && | and | (x 1) является true | Попробовать » |
| || | or | (x == 5 || y == 5) является false | Попробовать » |
| ! | not | !(x == y) является true | Попробовать » |
Условный (тернарный) оператор
JavaScript также содержит условный оператор, который присваивает значение переменной на основе некоторого условия.
Синтаксис
Пример
Сравнение разных типов
Сравнение данных разных типов может дать неожиданные результаты.
| Случай | Значение | Попробуй |
|---|---|---|
| 2 «John» | false | Попробовать » |
| 2 == «John» | false | Попробовать » |
| «2» «12» | true | Попробовать » |
| «2» == «12» | false | Попробовать » |
При сравнении двух строк «2» будет больше «12», потому что (по алфавиту) 1 меньше 2.
Чтобы обеспечить правильный результат, перед сравнением необходимо преобразовать переменные в соответствующий тип:
Операторы сравнения
В JavaScript имеются как строгие сравнения, так и сравнения с преобразованием типа операндов. Строгие сравнения (к примеру, ===) истинны только в том случае, если типы сравниваемых значений являются одинаковыми (к примеру: string-string, number-number). Однако, чаще используются сравнения с преобразованием типов (к примеру, ==). Такой тип сравнения, перед тем как непосредственно выполнить сравнение, приводит операнды к одному типу. В случае же, абстрактного реляционного сравнения, операнды сперва преобразуются в примитивы, затем приводятся к одному типу, и только после этого сравниваются.
Строки сравниваются на основе стандартного лексикографического упорядочения, используя значения Unicode.
При использовании сравнения с преобразованием типов, следует быть крайне осторожным, так как это может привести к непредвиденным проблемам, связанным с особенностями конвертации различных типов (см. параграф «Использование операторов равенства»).
Операторы равенства
Равно (==)
Оператор равно сначала приводит операнды к одному типу, и затем применяет строгое сравнение. Если оба операнда являются объектами, то JavaScript сравнивает внутренние ссылки, которые равны в том случае, если они ссылаются на один и тот же объект в памяти.
Синтаксис
Примеры
Не равно (!=)
Оператор не равно возвращает true в том случае, если операнды не равны.Он аналогичен оператору равенства, перед сравнением приводит операнды к одному типу. В случае если оба операнда являются объектами, JavaScript сравнивает внутренние ссылки, которые не равны в том случае, если относятся к разным объектам в памяти.
Синтаксис
Примеры
Строго равно (===)
Оператор возвращает истинну в том случае, если операнды строго равны (см. выше). В отличие от оператора равно, данный оператор не приводит операнды к одному типу.
Синтаксис
Примеры
Строго не равно (!==)
Оператор строго не равно возвращает истину в том случае, если операнды не равны, или их типы отличаются друг от друга.
Синтаксис
Примеры
Операторы сравнения
)»>Больше (>)
Оператор больше возвращает истину в том случае, если значение левого операнда больше, чем правого.
Синтаксис
Примеры
)»>Больше или равно (>=)
Оператор больше или равно, возвращает истину в том случае, если значение операнда слева больше или равно значению операнда справа.
Синтаксис
Примеры
Используйте операторы строгого равенства в тех случаях, когда необходимо проверять не только значения операндов, но так же и их типы. Во противном случае, используйте операторы стандартного равенства, которые позволяют сравнить два операнда вне зависимости от их типов.
Когда происходит преобразование типов (т.е в случаях использования нестрогого сравнения), JavaScript преобразует типы String, Number, Boolean и Object, следующим образом:
Условные операторы if и switch
На этом занятии поговорим об условных операторах. Что это такое? Представьте, что вам нужно вычислить модуль числа, хранящегося в переменной x. Как это сделать? Очевидно, нужно реализовать такой алгоритм.
И в этом алгоритме есть вот такое ветвление программы: при x ) оператор;
Если выражение в круглых скобках истинно, то выполняется оператор, записанный в if. Иначе этот оператор не выполняется. Используя этот оператор, запишем программу для вычисления модуля числа:
Здесь операция изменения знака переменной x будет выполняться только для отрицательных величин, а положительные просто выводиться в консоль, минуя эту операцию.
Какие операторы сравнения существуют в JavaScript и как они работают? Многие из них нам известны из школьного курса математики, это:























