Если вы думаете, что «==» сравнивает только значения с обеих сторон и возвращает true или false и не имеет ничего общего с типами и приведением, то вы НЕ полностью правы.

Что на самом деле делает «==» и как это работает?

var x = 5;
var y = "5";
console.log(x == y);                    //true

В приведенном выше случае «==» не только сравнивает значения с обеих сторон, но и выполняет некоторые действия под капотом:

  1. Сначала он проверяет типы значений, т. е. typeOf x и typeOf y, и если типы совпадают, он просто возвращает (x === y).
  2. Если типы различаются, как в нашем случае, x — число, а y — строка, «==» будет неявно преобразовывать строку в число, выполняя Number(y).
var x = 5;
var y = "5";
console.log(x == y);               
/*
    y = Number(y);
    return x == y;     =>    which is same as 5 == 5 => true
*/

Таким образом, простыми словами «==» также учитывает типы и выдает некоторый результат в соответствии с ним, а не только сравнивает значения с обеих сторон.

Для тех, кто считает это утверждение неверным, или для тех, кто хочет более подробно ознакомиться с работой ==, посетите раздел спецификация.

Хорошее знание инструмента, над которым вы работаете, очень важно для повышения качества и эффективности.