| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Equality | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Der Gleichheitsoperator (==) prft, ob seine beiden Operanden gleich sind und gibt ein booleanes Ergebnis zurck. Im Gegensatz zum strikten Gleichheitsoperator versucht er, Operanden unterschiedlicher Typen 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
x == y
Die Gleichheitsoperatoren (== und !=) bieten die IsLooselyEqual-Semantik. Dies kann grob wie folgt zusammengefasst werden:
true nur, wenn beide Operanden auf dasselbe Objekt verweisen.true nur, wenn beide Operanden dieselben Zeichen in derselben Reihenfolge haben.true nur, wenn beide Operanden denselben Wert haben. +0 und -0 werden als derselbe Wert betrachtet. Wenn einer der Operanden NaN ist, geben Sie false zurck; daher ist NaN niemals gleich NaN.true nur, wenn beide Operanden true oder beide false sind.true nur, wenn beide Operanden denselben Wert haben.true nur, wenn beide Operanden dasselbe Symbol referenzieren.null oder undefined ist, muss der andere ebenfalls null oder undefined sein, um true zurckzugeben. Andernfalls geben Sie false zurck.false zurck.true wird zu 1 und false wird zu 0 konvertiert. Vergleichen Sie dann die beiden Operanden erneut locker.NaN, was garantiert, dass die Gleichheit false ist.NaN ist, geben Sie false zurck.BigInt()-Konstruktor. Wenn die Konvertierung fehlschlgt, geben Sie false zurck.Die lose Gleichheit ist symmetrisch: A == B hat immer identische Semantik wie B == A fr alle Werte von A und B (auer der Reihenfolge der angewandten Konvertierungen).
Der bemerkenswerteste Unterschied zwischen diesem Operator und dem strikten Gleichheitsoperator (===) besteht darin, dass der strikte Gleichheitsoperator keine Typkonvertierung versucht. Stattdessen betrachtet der strikte Gleichheitsoperator immer Operanden unterschiedlicher Typen als unterschiedlich. Der strikte Gleichheitsoperator fhrt im Wesentlichen nur Schritt 1 aus und gibt in allen anderen Fllen false zurck.
Es gibt eine "absichtliche Verletzung" des oben genannten Algorithmus: Wenn einer der Operanden document.all ist, wird er behandelt, als ob er undefined wre. Dies bedeutet, dass document.all == null true ist, aber document.all === undefined || document.all === null ist false.
1 == 1; // true
"hello" == "hello"; // true
"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
const object1 = {
key: "value",
};
const object2 = {
key: "value",
};
console.log(object1 == object2); // false
console.log(object1 == object1); // true
Beachten Sie, dass mit new String() konstruierte Strings 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, werden sie als Objekte verglichen und mssen 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
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
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
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-equality-operators |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |