Рядки порівнюються на основі стандартного лексикографічного впорядкування, використовуючи значення Unicode.
- Два рядки строго рівні тільки в тому випадку, якщо вони мають однакову довжину, і ті ж символи в однаковій послідовності і відповідних позиціях.
- Два числа строго рівні в тому випадку, якщо вони чисельно рівні. NaN не дорівнює нічому, в тому числі і NaN. Нулі з позитивним і негативним знаком рівні.
- Два логічних значення (boolean) рівні тільки в тому випадку, якщо вони обидва істинні (true) чи хибні (false).
- Два різних об'єкта ніколи не рівні як в строгих, так і в абстрактних порівняннях.
- Порівняння об'єкта істинно лише в тому випадку, якщо обидва операнда посилаються на один і той же об'єкт в пам'яті.
- Види null і undefined рівні собі як в строгому порівнянні, так і в абстрактному.
При використанні порівняння з перетворенням типів, слід бути вкрай обережним, так як це може привести до непередбачених проблем, пов'язаних з особливостями конвертації різних типів (див. Параграф "Використання операторів рівності").
Оператори рівності
Оператор повертає істину в тому випадку, якщо операнди строго рівні (див. Вище). На відміну від оператора одно. даний оператор не призводить операнди до одного типу.
Оператор строго не дорівнює повертає істину в тому випадку, якщо операнди не рівні, або їх типи відрізняються один від одного.
Оператор менше або дорівнює, повертає істину в тому випадку, якщо значення операнда зліва менше, або дорівнює значенню операнда справа.
Використання операторів рівності
Оператори суворого равентсву (=== та! ==) використовують Строгий Алгоритм еквівалентно Порівняння, і призначені для порівняння операндів одного типу. Якщо операнди мають різні типи, то результат операції порівняння завжди буде брехнею. Наприклад, вираз 5! == '5' буде істинним.
Використовуйте оператори суворого рівності в тих випадках, коли необхідно перевіряти не тільки значення операндів, але так само і їх типи. У іншому випадку, використовуйте оператори стандартного рівності, які дозволяють порівняти два операнда незалежно від їх типів.
Увага: Об'єкти String мають тип Object, а не String. Такі об'єкти використовуються рідко, так що наступний код може вас сильно здивувати.