2016-06-27 6 views
0

Als ichWarum ist null == 0 gibt false aus, da beide falsche Werte sind?

null == 0 

laufen oder

0 == null 

beide Ausgänge falsch, auch wenn beide Falsey Werte sind, warum?

+2

Warum '1 == 2' Ausgang falsch, obwohl sie beide truthy Werte sind? – JJJ

+1

@Juhana Weil ihr Typ der gleiche ist und nach Spezifikation http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison, (Klausel 3) wenn der Typ derselbe ist, dann strikte Gleichheit wird ausgeführt – gurvinder372

+2

_Wenn ein Objekt mit einer Zahl oder einer Zeichenfolge verglichen wird, versucht JavaScript, den Standardwert für das Objekt zurückzugeben. Operatoren versuchen, das Objekt mit den Methoden valueOf und toString der Objekte in einen primitiven Wert, einen String- oder Zahlenwert zu konvertieren. Wenn dieser Versuch, das Objekt zu konvertieren, fehlschlägt, wird ein Laufzeitfehler generiert. _ Wie _Bergi_ sagte, sind _Null- und 'Undefined'-Typen genau gleich und abstrakt. [Ref] (https: // developer .mozilla.org/de-DE/docs/Web/JavaScript/Referenz/Operatoren/Vergleichsoperatoren) _ – Rayon

Antwort

-1

== prüft nicht nur für Werte, sondern auch für die Typen (und nicht in der gleichen Art und Weise, die ===) Sie weitere Details hier sehen können: The Abstract Equality Comparison Algorithm

+0

Wenn Sie verwenden === auch immer noch nur falsch –

+0

== überprüft nur den Wert === nur wird der Datentyp –

+0

nein, Sie können hier überprüfen, und Sie werden sehen, dass mehrere Typ-Check von der == Operator: http durchgeführt werden : //es5.github.io/#x11.9.3 – mdcarter

Verwandte Themen