Die Sprachspezifikation sagt ausdrücklich :
Wenn x null ist und y undefiniert ist, gebe true
zurück
Ich kenne keine Aufzeichnungen des Sprachdesignprozesses, die die Gründe für diese Entscheidung erklären, aber ==
hat Regeln für die Handhabung verschiedener Typen, und "null" und "undefined" sind beides Dinge, die "nichts" bedeuten ", so macht es gleich intuitiv macht Sinn.
(Wenn du nicht fiedeln willst, benutze stattdessen ===
).
Aus dem gleichen Grund, dass 0 == "0"
- javascript falsch geschrieben ist - wenn etwas in etwas anderes umgewandelt werden kann, dann wird es so lange sein, bis Sie ===
Wird Ihnen falsch geben.
Warum diese bestimmten Konvertierungen passieren - die Antwort ist ganz einfach "die Spezifikation sagt, dass das passieren soll". Es muss keinen anderen Grund geben, als "weil es so sagt", warum sich Programmiersprache auf bestimmte Arten verhält.
Die Verwendung des double-equal-Operators zwingt Javascript zur Eingabe von Zwangsbedingungen.
Mit anderen Worten, wenn Sie x == y
ausführen, wenn x
und y
nicht vom selben Typ sind, wird JavaScript einen Wert vor dem Vergleich in einen anderen umwandeln, so wie wenn String und Zahl verglichen werden Immer in eine Zahl umwandeln und dann
Aus diesem Grund können viele Vergleiche gemischter Typen in JavaScript zu unerwarteten oder kontraintuitiven Ergebnissen führen.
Wenn Sie Vergleiche in JavaScript durchführen möchten, ist es normalerweise eine bessere Idee, den Triple-Equival-Operator ===
anstelle von double-equal zu verwenden. Dies macht keinen Typuszwang; Wenn die Typen unterschiedlich sind, wird false zurückgegeben. Dies ist in der Regel, was Sie brauchen.
Sie sollten nur double-equal verwenden, wenn Sie absolut sicher sind, dass Sie es brauchen.
Der Operator ==
vergleicht die Typen nicht. null
und undefined
beide geben false
zurück. Aus diesem Grund prüft Ihr Code, ob false
gleich false
ist.
Allerdings sind ihre Typen nicht gleich.
%Vor% Aus diesem Grund gibt die nächste Anweisung false zurück, da der Vergleichsoperator ===
sowohl die Typen als auch deren Werte überprüft.
Tags und Links javascript