Baseline Widely available
Der Gleichheitsoperator (==
) prüft, ob seine beiden Operanden gleich sind, und gibt ein Boolesches Ergebnis zurück. Im Gegensatz zum strikten Gleichheitsoperator versucht er, Operanden unterschiedlichen Typs zu konvertieren und zu vergleichen.
console.log(1 == 1);
// Expected output: true
console.log("hello" == "hello");
// Expected output: true
console.log("1" == 1);
// Expected output: true
console.log(0 == false);
// Expected output: true
Syntax Beschreibung
Die Gleichheitsoperatoren (==
und !=
) bieten die IsLooselyEqual Semantik. Diese kann grob wie folgt zusammengefasst werden:
true
nur zurück, wenn beide Operanden auf dasselbe Objekt verweisen.true
nur zurück, wenn beide Operanden dieselben Zeichen in der gleichen Reihenfolge haben.true
nur zurück, wenn beide Operanden denselben Wert haben. +0
und -0
werden als derselbe Wert behandelt. Wenn einer der Operanden NaN
ist, wird false
zurückgegeben; NaN
ist also nie gleich NaN
.true
nur zurück, wenn beide Operanden true
oder beide false
sind.true
nur zurück, wenn beide Operanden denselben Wert haben.true
nur zurück, wenn beide Operanden auf dasselbe Symbol verweisen.null
oder undefined
ist, muss der andere ebenfalls null
oder undefined
sein, um true
zurückzugeben. Andernfalls wird false
zurückgegeben.false
zurück.true
wird in 1 konvertiert und false
in 0. Dann vergleichen Sie die beiden Operanden erneut locker.NaN
, was die Gleichheit garantiert false
sein lässt.NaN
ist, geben Sie false
zurück.BigInt()
. Wenn die Konvertierung fehlschlägt, geben Sie false
zurück.Lockere Gleichheit ist symmetrisch: A == B
hat immer dieselbe Semantik wie B == A
für beliebige Werte von A
und B
(auÃer für die Reihenfolge der angewendeten Konvertierungen).
Der bemerkenswerteste Unterschied zwischen diesem Operator und dem strikten Gleichheitsoperator (===
) besteht darin, dass der strikte Gleichheitsoperator keine Typkonvertierung durchführt. Stattdessen betrachtet der strikte Gleichheitsoperator Operanden unterschiedlichen Typs immer als verschieden. Der strikte Gleichheitsoperator führt im Wesentlichen nur Schritt 1 durch und gibt dann in allen anderen Fällen false
zurück.
Es gibt einen "willentlichen VerstoÃ" gegen den obigen Algorithmus: Wenn einer der Operanden document.all
ist, wird es behandelt, als wäre es undefined
. Das bedeutet, dass document.all == null
true
ist, aber document.all === undefined && document.all === null
ist false
.
1 == 1; // true
"hello" == "hello"; // true
Vergleich mit Typkonvertierung
"1" == 1; // true
1 == "1"; // true
0 == false; // true
0 == null; // false
0 == undefined; // false
0 == !!null; // true, look at Logical NOT operator
0 == !!undefined; // true, look at Logical NOT operator
null == undefined; // true
const number1 = new Number(3);
const number2 = new Number(3);
number1 == 3; // true
number1 == number2; // false
Vergleich von Objekten
const object1 = {
key: "value",
};
const object2 = {
key: "value",
};
console.log(object1 == object2); // false
console.log(object1 == object1); // true
Vergleich von Strings und String-Objekten
Beachten Sie, dass Strings, die mit new String()
konstruiert wurden, Objekte sind. Wenn Sie eines davon mit einem String-Literal vergleichen, wird das String
-Objekt in ein String-Literal konvertiert und die Inhalte werden verglichen. Wenn jedoch beide Operanden String
-Objekte sind, dann werden sie als Objekte verglichen und müssen auf dasselbe Objekt verweisen, damit der Vergleich erfolgreich ist:
const string1 = "hello";
const string2 = String("hello");
const string3 = new String("hello");
const string4 = new String("hello");
console.log(string1 == string2); // true
console.log(string1 == string3); // true
console.log(string2 == string3); // true
console.log(string3 == string4); // false
console.log(string4 == string4); // true
Vergleich von Daten und Strings
const d = new Date("1995-12-17T03:24:00");
const s = d.toString(); // for example: "Sun Dec 17 1995 03:24:00 GMT-0800 (Pacific Standard Time)"
console.log(d == s); // true
Vergleich von Arrays und Strings
const a = [1, 2, 3];
const b = "1,2,3";
a == b; // true, `a` converts to string
const c = [true, 0.5, "hey"];
const d = c.toString(); // "true,0.5,hey"
c == d; // true
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4