Equality
Порівняння
Одна річ, на яку потрібно звернути увагу в JavaScript, це різниця між ==
та ===
. Оскільки JavaScript намагається бути стійким до помилок програмування, ==
намагається автоматично конвертувати типи між двома змінними, наприклад, конвертує рядок в число, щоб ви могли порівняти з числом, як показано нижче:
Однак, вибір, який робить JavaScript, не завжди є ідеальним. Наприклад, у наведеному нижче прикладі перше твердження є хибним, оскільки ""
та "0"
- це обидва рядки (string) і, очевидно, не є рівними. Однак у другому випадку як 0
, так і пустий рядок (""
) є ложними значеннями (тобто поводяться як false
) і, отже, вони рівні з точки зору ==
. У обох випадках твердження є хибними, коли використовується ===
.
Зауважте, що
string == number
таstring === number
обидва є помилками на етапі компіляції в TypeScript, тому зазвичай вам не потрібно хвилюватися про це.
Аналогічно до ==
проти ===
, існує також !=
проти !==
.
Тому порада: завжди використовуйте ===
і !==
, за винятком перевірок на значення null, про які ми розповімо пізніше.
Структурне порівняння
Якщо ви хочете порівняти два об'єкти на структурну рівність, оператори ==
/===
не є достатніми. Наприклад:
Для здійснення таких перевірок використовуйте пакет npm deep-equal, наприклад:
Однак, досить часто вам не потрібно глибоке порівняння, і все, що вам дійсно потрібно, - це перевірка за допомогою якогось id
, наприклад:
Last updated