Оператори порівняння і логічні значення

У цьому розділі ми познайомимося з операторами порівняння і з логічними значеннями, які такі оператори повертають.

Багато операторів порівняння знайомі нам з математики:

Як і інші оператори, порівняння повертає значення. Це значення має логічний тип.

Існує всього два логічних значення:

  • true - має сенс «так», «вірно», «істина».
  • false - означає «ні», «не так», «брехня».

Для коректного порівняння символи повинні бути в однаковому регістрі.

Якщо перша буква першого рядка більше - значить перший рядок більше, незалежно від інших символів:

Якщо однакові - порівняння йде далі. Тут воно дійде до третьої літери:

При цьому будь-яка буква більше відсутності літери:

Таке порівняння називається словниковим.

Зазвичай ми отримуємо значення від відвідувача у вигляді рядків. Наприклад, prompt повертає рядок. яку ввів відвідувач.

Числа, отримані таким чином, у вигляді рядків порівнювати не можна, результат буде невірним. наприклад:

В наведеному вище прикладі 2 виявилося більше 14. бо рядки порівнюються посимвольний, а перший символ '2' більше '1'.

Правильно було б перетворити їх до числа явно. Наприклад, поставивши перед ними +:

Суворе порівняння переважно, якщо ми хочемо бути впевнені, що «сюрпризів» не буде.

Проблеми зі спеціальними значеннями можливі, коли до змінної застосовується операція порівняння> <<=>=. а у неї може бути як чисельне значення, так і null / undefined.

Інтуїтивно здається, що null / undefined еквівалентні нулю, але це не так.

Вони ведуть себе по-іншому.

  1. Значення null і undefined рівні == один одному і не рівні чого б то не було ще. Це жорстке правило буквально прописано в специфікації мови.
  2. При перетворенні в число null стає 0. а undefined стає NaN.

Подивимося забавні слідства.

Порівняємо null з нулем: