Seperti yang dikomentari oleh @Mauricio (![]+[])[+[]]adalah "f" (karakter pertama dari "false"), (![]+[])[+!+[]])adalah "a", dll ...
Bagaimana cara kerjanya?
Mari kita periksa karakter pertama, 'f':
(![]+[])[+[]]; // 'f'
Bagian pertama dari ekspresi-antara kurung-disusun oleh ![]+[], operan pertama operator Penambahan ini ![]dan itu akan menghasilkan false, karena obyek-sebagai array yang setiap Obyek lain misalnya-adalah truthy , dan menerapkan Logical (!) TIDAK unary operator, itu menghasilkan nilai false, misalnya.
![]; // false, it was truthy
!{}; // false, it was truthy
!0; // true, it was falsey
!NaN; // true, it was falsey
Setelah itu, kita memiliki operan kedua tambahan, Array kosong [], ini dibuat hanya untuk mengubah falsenilai menjadi String, karena representasi string dari array kosong hanyalah string kosong, setara dengan:
false+[]; // "false"
false+''; // "false"
Bagian terakhir, pasangan tanda kurung siku setelah tanda kurung, mereka adalah pengakses properti, dan mereka menerima ekspresi, yang dibentuk oleh Operator Unary Plus yang diterapkan ke array kosong lagi.
Apa yang dilakukan oleh Unary Plus Operator adalah konversi tipe Number, sebagai contoh:
typeof +"20"; // "number"
Sekali lagi, ini diterapkan ke Array kosong, dan seperti yang saya katakan sebelumnya, representasi String dari Array adalah string kosong, dan ketika Anda mengonversi string kosong menjadi Angka, itu diubah menjadi nol:
+[]; // 0, because
+[].toString(); // 0, because
+""; // 0
Oleh karena itu, kita dapat "mendekode" ekspresi menjadi dalam beberapa langkah:
(![]+[])[+[]];
(false+[])[+[]];
(false+'')[+[]];
(false+'')[0];
('false')[0]; // "f"
Perhatikan bahwa mengakses karakter dengan menggunakan notasi braket pada nilai String bukanlah bagian dari ECMAScript ke-3. Spesifikasi Edisi, (itulah mengapa filecharAt metode ini ada).
Namun, jenis "properti indeks" yang mewakili karakter string ini distandarisasi pada ECMAScript 5, dan bahkan sebelum standarisasi fitur tersebut tersedia di sejumlah browser yang baik (bahkan dalam IE8 (mode standar)).