Eu descobri recentemente isso 2 == [2]
em JavaScript. Acontece que essa peculiaridade tem algumas consequências interessantes:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Da mesma forma, o seguinte funciona:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Ainda mais estranho, isso também funciona:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Esses comportamentos parecem consistentes em todos os navegadores.
Alguma idéia de por que esse é um recurso de idioma?
Aqui estão as consequências mais insanas desse "recurso":
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Estes exemplos foram encontrados por jimbojw http://jimbojw.com fama bem como walkingeyerobot .
+"2"
é também o número 2.