Можливо, ви бачили подвійні та потрійні знаки рівності в JavaScript. Але що вони означають?
Ну коротше: за ==
своєю суттю перетворює тип, а ===
не перетворює тип.
Double Equals ( ==
) перевіряє лише рівність значення. Це за своєю суттю типовий примус. Це означає, що перед перевіркою значень він перетворює типи змінних, щоб вони відповідали один одному.
З іншого боку, Triple Equals ( ===
) не виконує примусу типу. Він перевірить, чи мають змінні, що порівнюються, однакове значення І однаковий тип.
Добре - тож давайте допоможемо вам краще зрозуміти різницю на кількох прикладах. Для кожного з них розгляньте, яким буде результат цих тверджень.
Приклад 1:
const foo = "test" const bar = "test" console.log(foo == bar) //true console.log(foo === bar) //true
Значення і тип обох foo
і bar
однакові. Тому результат true
для обох.
Приклад 2:
const number = 1234 const stringNumber = '1234' console.log(number == stringNumber) //true console.log(number === stringNumber) //false
Тут значення number
і stringNumber
виглядає подібним. Однак тип number
є Number
і тип stringNumber
є string
. Незважаючи на те, що значення однакові, тип не однаковий. Отже, ==
перевірка повертається true
, але коли перевіряється значення та тип, значення є false
.
Приклад 3:
console.log(0 == false) //true console.log(0 === false) //false
Причина: однакове значення, інший тип. Тип примусу
Це цікавий випадок. Значення 0
при встановленні збігу false
однакове. Це тому, що 0
і false
мають однакове значення для JavaScript, але при перевірці на тип і значення значення хибне, оскільки 0
є number
і false
є boolean
.
Приклад 4:
const str = "" console.log(str == false) //true console.log(str === false) //false
Значення порожнього рядка і false
однакове в JavaScript. Отже, ==
повертається істина. Однак тип відрізняється і, отже, ===
повертає false.
Коли слід використовувати ==
і коли слід використовувати ===
?
Якщо є сумніви, використовуйте ===
. Це позбавить вас від тонни потенційних помилок.
Якщо ви підтримуєте варіант використання, коли ви можете трохи поблажливо ставитись до типу вхідних даних, тоді використовуйте ==
. Наприклад, якщо API приймає як "true"
і true
від клієнта, використання ==
. Коротше кажучи, не використовуйте, ==
якщо у вас немає вагомого варіанту використання.
Ось зручна таблиця істинності JavaScript для довідки та для того, щоб показати вам, наскільки складною є рівність у JavaScript:

Якщо вам сподобалась ця стаття, обов’язково слідкуйте за мною у Twitter за оновленнями.
З: Скільки місця буде звільнено, як тільки Великобританія вийде з ЄС?
.
.
.
A: 1 ГБ # DevJoke #NotAJoke
- Шруті Капур (@ shrutikapoor08) 4 жовтня 2019 р