J'ai récemment découvert cela 2 == [2]
en JavaScript. En fait, cette bizarrerie a quelques conséquences intéressantes:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
De même, les travaux suivants:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Encore plus étrange encore, cela fonctionne aussi:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Ces comportements semblent cohérents sur tous les navigateurs.
Une idée de la raison pour laquelle il s'agit d'une fonctionnalité linguistique?
Voici les conséquences plus insensées de cette "fonctionnalité":
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Ces exemples ont été trouvés par jimbojw http://jimbojw.com fame ainsi que walkingeyerobot .
+"2"
est aussi le numéro 2.