Если вы переходите с другого языка программирования, такого как 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 : —

  1. Если 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

Спасибо за чтение!!