Saya baru-baru menemukan itu 2 == [2]
di JavaScript. Ternyata, kekhasan ini memiliki beberapa konsekuensi menarik:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Demikian pula, karya-karya berikut ini:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Bahkan lebih aneh lagi, ini juga berfungsi:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Perilaku ini tampaknya konsisten di semua browser.
Adakah yang tahu mengapa ini fitur bahasa?
Berikut adalah konsekuensi lebih gila dari "fitur" ini:
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a // also true, WTF?
Contoh-contoh ini ditemukan oleh ketenaran jimbojw http://jimbojw.com serta walkingeyerobot .
+"2"
juga nomor 2.