Warum wird {} == false
für false
und [] == false
für true
in JavaScript ausgewertet?
Dies ist die Typkonvertierung, die nach dem Algorithmus zum Vergleich abstrakter Gleichheit stattfindet:
%Vor%Referenzen: ToNumber , ToPrimitive
Und deswegen ziehen Sie es vor, einen strengen Vergleich zu verwenden.
Einige Beispiele, wie ToPrimitive
beim Vergleich Objekte in Primitive konvertiert. Standardmäßig wird die Methode valueOf
des Objekts aufgerufen und anschließend toString
, wenn valueOf
keinen primitiven Wert zurückgibt. Für Date
-Objekte wird standardmäßig toString
aufgerufen.
Tags und Links javascript boolean equality-operator