В этом руководстве вы узнаете, как использовать операторы сравнения JavaScript для сравнения двух значений.
| Оператор | Значение |
|---|---|
| < | меньше, чем |
| > | больше, чем |
| <= | меньше или равно |
| >= | больше или равно |
| == | равно |
| != | не равно |
Оператор сравнения возвращает логическое значение, указывающее, верно сравнение или нет. См. следующий пример:
let r1 = 20 > 10; // true let r2 = 20 < 10; // false let r3 = 10 == 10; // true

И принимает два значения. Если типы значений несопоставимы, оператор преобразует их в значения сопоставимых типов в соответствии с определенными правилами.
Сравнение чисел
Если значения являются числами, операторы сравнения выполняют числовое сравнение. Например:
let a = 10, b = 20; console.log(a >= b); // false console.log(a == 10); // true
Этот пример прост. Переменная a равна 10, b равна 20. Выражение a >= b expression возвращает false, а выражение a == 10 expression возвращает true.
Сравнение строк
Если операнды являются строками, JavaScript сравнивает коды символов в числовом порядке один за другим в строке.
let name1 = 'alice', name2 = 'bob'; let result = name1 < name2; console.log(result); // true console.log(name1 == 'alice'); // true
Поскольку JavaScript сравнивает коды символов в строках численно, вы можете получить неожиданный результат, например:
let f1 = 'apple', f2 = 'Banana'; let result = f2 < f1; console.log(result); // true
В этом примере f2 меньше, чем f1, потому что буква B имеет код символа 66, а буква a имеет код символа 97.
Чтобы исправить это, вам необходимо:
- Сначала преобразуйте строки в общий формат, либо строчные, либо прописные.
- Во-вторых, сравните преобразованные значения
Пример:
let f1 = 'apple', f2 = 'Banana'; let result = f2.toLowerCase() < f1.toLowerCase(); console.log(result); // false
Обратите внимание, что toLowerCase() — это метод объекта String, который преобразует строку в нижний регистр.
Сравнение числа со значением другого типа
Если одно значение является числом, а другое — нет, оператор сравнения преобразует нечисловое значение в число и сравнит их численно. Например:
console.log(10 < '20'); // true
В этом примере преобразуем строку '20' в число 20 и сравнивает с числом 10.
console.log(10 == '10'); // true
В этом примере оператор сравнения преобразует строку '10' в число 10 и сравнивает их численно.
Как сравнить объект с не-объектом
Если значение является объектом, вызывается метод valueOf() этого объекта, чтобы вернуть значение для сравнения. Если у объекта нет метода valueOf(), вместо него вызывается метод toString(). Например:
let apple = { valueOf: function() { return 10; }, };
let orange = { toString: function() { return '20'; }, };
console.log(apple > 10); // false
console.log(orange == 20); // trueВ этом первом сравнении объект apple имеет метод valueOf(), который возвращает 10. Поэтому оператор использует для сравнения число 10.
Во втором, сначала вызывает метод valueOf(). Однако у orange объекта нет метода valueOf(). Поэтому JavaScript вызывает метод toString(), чтобы получить возвращаемое значение 20 для сравнения.
Логическое значение с другим значением
Если значение является логическим значением, JavaScript преобразует его в число и сравнивает преобразованное значение с другим значением; true преобразуется в 1, а false преобразуется в 0. Например:
console.log(true > 0); // true console.log(false false); // true console.log(false > true); // false console.log(true >= true); // true console.log(true <= true); // true console.log(false = false); // true
В дополнение к приведенным выше правилам, операторы равенства ( == ) и не равенства ( != ) также имеют следующие правила.
null и undefined
В JavaScript null равно undefined. Это означает, что следующее выражение возвращает true.
console.log(null == undefined); // true
NaN с другими значениями
Если какое-либо значение равно NaN, то оператор равенства( == ) возвращает false.
console.log(NaN == 1); // false
Даже:
console.log(NaN == NaN); // false
Оператор не-равно ( != ) возвращает true при сравнении NaN с другим значением:
console.log(NaN != 1); // true
А также:
console.log(NaN != NaN); // true
Строгое равенство ( === ) и не строгое равенство ( !== )
Помимо приведенных выше операторов, JavaScript предоставляет операторы строгого равенства ( === ) и не строгого равенства ( !== ).
| Оператор | Значение |
|---|---|
| === | строгое равенство |
| !== | нестрогое равенство |
Операторы строгого равенства и не строгого равенства ведут себя так же, как операторы равенства и неравенства, за исключением того, что они не преобразуют операнд перед сравнением. См. следующий пример:
console.log("10" == 10); // true
console.log("10" === 10); // falseВ первом случае, поскольку мы используем оператор равенства, JavaScript преобразует строку в число и выполняет сравнение.
Однако во втором действии мы используем оператор строгого равенства ( === ), JavaScript не преобразует строку, поэтому результат будет false.
