Ich habe das kürzlich 2 == [2]
in JavaScript entdeckt. Wie sich herausstellt, hat diese Eigenart einige interessante Konsequenzen:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Ebenso funktioniert folgendes:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Noch seltsamer, das funktioniert auch:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Diese Verhaltensweisen scheinen in allen Browsern konsistent zu sein.
Irgendeine Idee, warum dies eine Sprachfunktion ist?
Hier sind weitere verrückte Konsequenzen dieser "Funktion":
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Diese Beispiele wurden von jimbojw http://jimbojw.com Fame sowie walkingeyerobot gefunden .
+"2"
ist auch die Nummer 2.