Если вы переходите с другого языка программирования, такого как C++, Java или Python. Возможно, это будет что-то новое и интересное для вас. Как это было для меня!! И если это ваш первый язык программирования, то вы должны знать, что это очень уникальная штука, основанная на JavaScript.
Итак, приступим. Так что же это за операторы == и ===?
== – абстрактный оператор равенства, а === строгий оператор равенства.
Основное отличие состоит в том, что они оба сначала выполняют проверку типов, и если тип обоих операндов имеет один и тот же тип данных, то операция передается оператору строгого равенства, а если типы не совпадают, операция передается абстрактному равенству. оператор и абстрактное равенство будут выполнять принуждение к обоим своим операндам соответственно.
В первой строке кода JavaScript проверит типы левого и правого операнда и, если они оба одинаковы, передаст их оператору строгого равенства. Теперь вы можете быть сбиты с толку тем, что подразумевается под рукой? Это означает, что он будет вызывать оператор строгого равенства внутри.
Итак, сначала давайте начнем с первого оператора,
1. Оператор строгого равенства (===):
Оператор строгого равенства (===), где x и y будут левым и правым операндами, которые дадут true или false : —
1. Если type(x) === type(y), то будет возвращено значение true.
2. Если type(x) равно Number :
→ если x равно NaN, вернуть false.
→ если y равно NaN, вернуть false.
→ если x совпадает с числом y, вернуть true.
2. Абстрактный оператор равенства:
Абстрактный оператор равенства (==), где x и y будут левым и правым операндами, которые дадут true или false : —
- Если type(x) == type(y), то же самое, тогда будет возвращен результат выполнения Оператора строгого равенства x===y.
2. Если x равно null, а y не определено, вернуть true. (наоборот)
3. Если type(x) равно Number, а type(y) равно String,, верните результат сравнение x==ToNumber(y). (наоборот)
4. Если Type(x) имеет логическое значение, вернуть результат сравненияToNumber(x) == y. (наоборот)
5. Если Type(x) — это String, Number или Symbol, а Type(y) — это Object, вернуть результат сравненияx == ToPrimitive (у). (наоборот)
Так, вот оно!! Мы закончили с оператором абстрактного равенства и оператором строгого равенства.
Примечание:
1. Функции, которые использует JavaScript, т. е. ToPrimitive(), ToNumber() и т. д. Это абстрактные операции, которые используются внутри JavaScript.
2. В JavaScript NaN — это единственное примитивное значение, которое не равно самому себе.
Источник: https://262.ecma-international.org/10.0/#sec-abstract-equality-comparison
Спасибо за чтение!!