Warum wird {} == false zu false ausgewertet, während [] == false zu true ausgewertet wird?

8

Warum wird {} == false für false und [] == false für true in JavaScript ausgewertet?

    
prateekj_ahead 16.01.2015, 17:16
quelle

1 Antwort

6

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.

%Vor%     
Felix Kling 16.01.2015, 17:19
quelle