У JavaScript числа можна порівнювати за допомогою таких операторів відношення та рівності.
| Порівняння | Оператор |
|---|---|
| Більше ніж | a > b |
| Більше або дорівнює | a >= b |
| Менше ніж | a < b |
| Менше або дорівнює | a <= b |
| (Строго) дорівнює | a === b |
| Не (строго) дорівнює | a !== b |
Результат порівняння завжди є булевим значенням (англ. Boolean), тобто true або false.
1 < 3;
// => true
2 !== 2;
// => false
1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.
У JavaScript наведені вище оператори порівняння можна застосовувати і до рядків тексту (англ. string). У такому разі застосовується словниковий (лексикографічний) порядок. Перелік точного порядку всіх символів можна знайти тут.
'Apple' > 'Pear';
// => false
'a' < 'above';
// => true
'a' === 'A';
// => false
Треба бути уважними, коли ми порівнюємо дві змінні, які нібито містять числові значення, але мають тип рядка тексту.
Через словниковий порядок результат буде не таким, як під час порівняння значень типу Number.
10 < 2;
// => false
'10' < '2';
// => true (because "1" comes before "2")
Ще один спосіб порівнювати рядки тексту - метод localeCompare. Він дозволяє задавати різноманітні параметри, щоб змінити спосіб порівняння рядків тексту.
Можливо, виникає питання, навіщо в JavaScript аж три знаки рівності для перевірки рівності.
=== позначає перевірку на строгу рівність: це означає, що перетворення типів не виконується, а значення різних типів завжди нерівні.
'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.
1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.
Для перевірки рівності в JavaScript рекомендовано використовувати === та !==.
Існують також == і !=, які позначають перевірку на нестрогу рівність.
Їх варто уникати, бо перед порівнянням вони виконують неявне перетворення типів.
Результати в таких випадках важко передбачити, і іноді вони не збігаються з очікуваними.
Докладніше про це можна прочитати тут.
0 == false;
// => true
Теоретично можна порівнювати і значення різних типів (наприклад, "1" < 2).
Тоді значення неявно перетворюються, щоб визначити, яким буде результат: правда чи неправда.
Як і перевірку на нестрогу рівність, це теж не рекомендують із тієї ж причини, що наведена вище.
Що ж робити натомість? Можна застосувати явне перетворення типів. Так ми можемо переконатися, що значення мають правильний тип, перш ніж їх порівнювати. Тоді код буде зрозумілішим і менш схильним до помилок.