Когда я разрабатывал JavaScript на ранних этапах обучения, меня иногда смущало, когда использовать знак двойного равенства (==) или знак тройного равенства (===). Я подумал, что если я запутался, я уверен, что найдутся и другие, которым просто нужно быстро понять, когда что использовать. Основное различие между ними заключается в том, что === будет сравнивать элементы без преобразования типа (принуждение типа AKA). Итак, если есть что взять из этой статьи, так это то, что оператор тройного равенства (== =) - рекомендуемый подход почти для всех равных сравнений.

На данный момент JavaScript предоставляет три способа сравнения двух элементов друг с другом.

  1. ==
  2. ===
  3. Object.is (a, b) - введено в ECMAScript 2015.

Все перечисленные выше операторы / методы имеют дело с тем, как они обрабатывают примитивы, и не могут сравнивать структуру непримитивов. Если сравниваются элементы с непримитивным значением, оператор / метод всегда будет возвращать false.

{a: '1'} == {a: '1'}          // returns false
{a: '1'} === {a: '1'}         // returns false
Object.is({a: '1'}, {a: '1'}) // returns false

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

"01" == 1  // returns true
"01" === 1 // returns false

Как видите, мы сравниваем строку с числом, и с помощью оператора == он вернет true, поскольку он неявно преобразует строку «01» в число 1. Это может быть проблематичным, поскольку Значения, которые мы сравниваем, в большинстве случаев являются динамическими, и возвращение ложных срабатываний при сравнении приведет к кошмарам. Всегда будут крайние случаи, когда == можно безопасно использовать, но, скорее всего, всегда лучше придерживаться ===.

Для справки, вот таблица, созданная кем-то для отображения сравнения значений в JavaScript:

источник: http://dorey.github.io/JavaScript-Equality-Table/unified/

Для получения дополнительной информации, вот несколько ресурсов, которые я нашел полезными по этой теме: