Магия JavaScript
WebDEVНе секрет, что из-за того, что в JavaScript'е нету строгой типизации, из-за этого могут происходить странные вещи.

Если мы прибавляем строку к чему-то, результат будет конвертирован в строку.
Если мы припишем слева от чего-то плюс или минус, будет произведена попытка конвертации строки в число.
Если на что-то навесить логическое отрицание, результат будет представлен как логическая величина.
Мы можем использовать это и творить магию, используя лишь эти символы: [, ], (, ), ! и +.

Вот так можно получить букву a:
![] === false ![]+[] === "false" +!![] === 1 ------------------------ (![]+[])[+!![]] === "a" // "false"[1]
Таким образом можно получить все буквы из слов true и false. Такими буквами даже можно писать код! Чтоб писать код нам нужно больше букв.. Откуда их брать?
Ну, ещё есть undefined, который и можно получить, сделав что-то глупое, как [][[]].
Используя все эти буквы, можно составить слова fill, filter и find. Конечно, есть и другие доступные слова, но ценностью именно этих слов является то, что они — методы массивов. Это означает, что они являются частью объекта Array и их можно вызывать прямо для массивов-сущностей. Например, [2,1].sort().
Кроме того, нужно помнить, что свойства объекта в JS можно использовать как через точку, так и через квадратные скобки. Поскольку методы массива — это свойства объекта Array, мы можем вызывать их, используя скобки вместо точки.
То есть [2,1]["sort"]() — это то же самое, что и [2,1].sort().

И получим новые символы: c, o, v, (, ), {, [, ], }, .
Так можно получить все буквы алфавита. Вот полный список букв и символов.
Существует инструмент, который может конвертировать нормальный код в "магический". Называется JSFuck.
Я составил небольшое послание, кто первый расшифрует получит ничего.