Если вы думаете, что «==» сравнивает только значения с обеих сторон и возвращает true или false и не имеет ничего общего с типами и приведением, то вы НЕ полностью правы.
Что на самом деле делает «==» и как это работает?
var x = 5; var y = "5"; console.log(x == y); //true
В приведенном выше случае «==» не только сравнивает значения с обеих сторон, но и выполняет некоторые действия под капотом:
- Сначала он проверяет типы значений, т. е. typeOf x и typeOf y, и если типы совпадают, он просто возвращает (x === y).
- Если типы различаются, как в нашем случае, 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 */
Таким образом, простыми словами «==» также учитывает типы и выдает некоторый результат в соответствии с ним, а не только сравнивает значения с обеих сторон.
Для тех, кто считает это утверждение неверным, или для тех, кто хочет более подробно ознакомиться с работой ==, посетите раздел спецификация.
Хорошее знание инструмента, над которым вы работаете, очень важно для повышения качества и эффективности.