Di recente l'ho scoperto 2 == [2]
in JavaScript. A quanto pare, questa stranezza ha un paio di conseguenze interessanti:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Allo stesso modo, i seguenti lavori:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Ancora più strano, funziona anche questo:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Questi comportamenti sembrano coerenti in tutti i browser.
Qualche idea sul perché questa sia una funzione linguistica?
Ecco le conseguenze più folli di questa "caratteristica":
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Questi esempi sono stati trovati dalla fama di jimbojw http://jimbojw.com e da walkingeyerobot .
+"2"
è anche il numero 2.