В отличие от других языков у JavaScript есть два способа определения равенства. Это может быть довольно запутанным для таких людей, как я, приезжающие из типированных языков, таких как Java или C ++. Моя цель – объяснить как ясную, так и краткую манеру с помощью определения и примеров.
Рубец равна (строгое равенство)
Тройной равенство сравнивает два значения для равенства. Нет дополнительной работы, она просто проверяет, имеют ли оба значения одинаковый тип, и если они это делают, проверяет, одинаковы ли два значения. Если типы не те же, он возвращает ложь. Если типы одинаковы, но значения различны, они возвращают false. Вот некоторые примеры:
7 === 7 //true 7 === '7' // false
Двойное равное (свободное равенство)
Сравнение двойного равных работает, сначала преобразование оба значения в общий тип, а затем проходя строгое сравнение AS. Давайте посмотрим на пример, чтобы сделать объяснение немного более понятным. Приведенный ниже код сравнивает число и строку. Сравнение двойного равных сначала преобразует оба значения в общий тип (в данном случае число), а затем проводят строгое сравнение (т. Е. Он проверяет, если 17 и 17 являются одинаковыми типами и равны, что является истинным, поскольку на предыдущем этапе он преобразовано оба значения в число).
17 == '17' // true 17 == 17 // true
Закрытие
Трудно забыть разницу между ними. При этом я рекомендую вам написать код, который позволяет использовать Triple Equals, а не два раза. Использование двойных равных может привести к нежелательным преобразованию, дающим неточные результаты.
Оригинал: “https://dev.to/rsanchezp/double-equals-vs-triple-equals-in-javascript-34fp”