- 1
console.log((typeof[])[!![]-!![]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[!![]+!![]+!![]+!![]]+(typeof([]+[]))[!![]+!![]+!![]+!![]+!![]]+'+'+(typeof[])[!![]+!![]]+(typeof([]+[]))[!![]-!![]]+'='+(![]+[])[!+[]+!+[]]+(typeof[])[!![]-!![]]+'\\/'+([![]]+[][[]])[!![]+!![]+!![]+!![]])
http://www.jsfuck.com/
Действительно, глупо. Я бы начал с написания простенького компилятора.
И прогнал бы его через самого себя, перед тем как выкладывать на гитхаб.
так получаем числа, пустые строки, true/false/undefined, строки "true"/"false"/"undefined"
из false и undefined берём отдельные буквы по индексу ("false"[0] это "f")
undefined, false дают f,i,l
важную роль играет что a.b эквивалентно a["b"]
[]["fill"] - некая функция (конкретно - метод Array.prototype.fill)
[]["fill"]+"" - исходный код ("function fill() { ... }")
([]["fill"]+"")[3] - "c"
([]["fill"]+"")[6] - "o"
получаем некоторые буквы, собираем код, из текстового представления получаем буквы и т.д.
[]["fill"] - некая функция
[]["fill"]["constructor"] - Function, конструктор функции
[]["fill"]["constructor"]("тело") - function() { тело; }
[]["fill"]["constructor"]("alert(1)")() - alert(1)