В JavaScript операторы == и == можно использовать для определения того, равны ли два значения; Разница состоит в том, что если эти два значения, которые оцениваются, противоречивы, оператор === напрямую вернется false, в то время как оператор == оператор вынесет решение после преобразования типа. Подробные правила суждения следующие:
=== Правила для судейских операторов
1. Если типы двух значений непоследовательны, верните ложные.
2. Если два значения имеют одинаковый тип, а значения одинаковы, верните True. Нан - это особый случай, NAN === NAN возвращает ложь.
3. Если оба значения имеют тип объекта, то, например Java, если ссылки не являются согласованными (эталонный указывает на один и тот же адрес объекта), даже если содержимое в объекте точно одинаковое, два значения считаются непоследовательными, а соответствующая операция вернет FALSE. Например, создайте два новых массива с таким же контентом, а затем выполните операцию === и верните результат в FALSE - хотя их содержание точно такое же, они все еще принадлежат двум разным объектам.
4.0 ===-0 возвращает True.
== Правила суждения операторов
Оператор == напечатает значение, а затем сравнит его. Преобразование типа соответствует следующим принципам: сначала преобразовать его в номер, а затем сравните его, и сначала преобразуйте его в строку, а затем сравните. Конкретные правила суждения следующие:
1. Если два типа значений одинаковы, верните после выполнения операции ===.
2.null == Неопределено верно.
3. True будет преобразован в 1 и сравнивается, FALSE будет преобразован в 0 и сравнивается.
4. Если одним из значений является объект, преобразуйте его в номер, а затем сравните, за исключением объекта даты.
5. Если одним из значений является объект даты, преобразуйте его в строку, а затем сравните.
эксперимент
Кода -копия выглядит следующим образом:
console.log ("3" === 3); // false
Console.log (nan === nan); // false
var a = {x: 1, y: 2};
var b = {x: 1, y: 2};
var c = a;
Console.log (a === b); // false
Console.log (a === c); // true
console.log (0 === -0); // true
console.log ("3" == 3); // true
console.log (null == не определен); // true
Console.log (true == 1); // true
Console.log (true == 9); // false
console.log ([9] == 9); // true
console.log ([9] == "9"); // true
var d = new Date ();
var s = d.toString ();
var n = d.valueof ();
Console.log (d == s); // true
Console.log (d == n); // false