Треки
/
JavaScript
JavaScript
/
Салабус
/
Порівняння
По

Порівняння у JavaScript

12 вправ

Про концепцію Порівняння

Порівняння чисел

У 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). Тоді значення неявно перетворюються, щоб визначити, яким буде результат: правда чи неправда. Як і перевірку на нестрогу рівність, це теж не рекомендують із тієї ж причини, що наведена вище.

Що ж робити натомість? Можна застосувати явне перетворення типів. Так ми можемо переконатися, що значення мають правильний тип, перш ніж їх порівнювати. Тоді код буде зрозумілішим і менш схильним до помилок.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Порівняння