Оператори порівняння і логічні значення
У цьому розділі ми познайомимося з операторами порівняння і з логічними значеннями, які такі оператори повертають.
Багато операторів порівняння знайомі нам з математики:
Як і інші оператори, порівняння повертає значення. Це значення має логічний тип.
Існує всього два логічних значення:
- true - має сенс «так», «вірно», «істина».
- false - означає «ні», «не так», «брехня».
Для коректного порівняння символи повинні бути в однаковому регістрі.
Якщо перша буква першого рядка більше - значить перший рядок більше, незалежно від інших символів:
Якщо однакові - порівняння йде далі. Тут воно дійде до третьої літери:
При цьому будь-яка буква більше відсутності літери:
Таке порівняння називається словниковим.
Зазвичай ми отримуємо значення від відвідувача у вигляді рядків. Наприклад, prompt повертає рядок. яку ввів відвідувач.
Числа, отримані таким чином, у вигляді рядків порівнювати не можна, результат буде невірним. наприклад:
В наведеному вище прикладі 2 виявилося більше 14. бо рядки порівнюються посимвольний, а перший символ '2' більше '1'.
Правильно було б перетворити їх до числа явно. Наприклад, поставивши перед ними +:
Суворе порівняння переважно, якщо ми хочемо бути впевнені, що «сюрпризів» не буде.
Проблеми зі спеціальними значеннями можливі, коли до змінної застосовується операція порівняння> <<=>=. а у неї може бути як чисельне значення, так і null / undefined.
Інтуїтивно здається, що null / undefined еквівалентні нулю, але це не так.
Вони ведуть себе по-іншому.
- Значення null і undefined рівні == один одному і не рівні чого б то не було ще. Це жорстке правило буквально прописано в специфікації мови.
- При перетворенні в число null стає 0. а undefined стає NaN.
Подивимося забавні слідства.
Порівняємо null з нулем: