Recientemente descubrí que 2 == [2]
en JavaScript. Como resultado, esta peculiaridad tiene un par de consecuencias interesantes:¿Por qué 2 == [2] en JavaScript?
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Del mismo modo, las siguientes obras:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Incluso más extraño aún, esto funciona así:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Estos comportamientos parecen consistentes en todos los navegadores.
¿Alguna idea de por qué esta es una función de idioma?
Estas son las consecuencias más demenciales 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 la fama, así como walkingeyerobot.
2 === [2] no funciona. –
Hmm así parece, mi mal. –
porque no coinciden en tipo. en el primer ejemplo, el lado izquierdo se evalúa primero, y terminan emparejando en tipo. – Shawn