Recientemente descubrí eso 2 == [2]
en JavaScript. Resulta que esta peculiaridad tiene un par de consecuencias interesantes:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Del mismo modo, los siguientes trabajos:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Aún más extraño, esto también funciona:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Estos comportamientos parecen consistentes en todos los navegadores.
¿Alguna idea de por qué esta es una característica del lenguaje?
Aquí hay consecuencias más locas de esta "característica":
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Estos ejemplos fueron encontrados por jimbojw http://jimbojw.com fama, así como walkingeyerobot .
+"2"
es también el número 2.