JSFuck
"a": 文字列"false"から取ることにする。"false"の2文字目は"a"である。これは
"false"[1]としてアクセスできる。"false"はfalse+[]から作ることができる。すなわち、falseと空の配列を足すことになる。
(false+[])[1]: falseは![]から生成できるので(論理否定を空の配列に適用する)
(![]+[])[1]: 1は数字であるので、これを+trueで置き換えると
(![]+[])[+true]: そしてfalseは![]でtrueは!![]なので
(![]+[])[+!![]] - これで"a"を返す。
JavaScriptで実際に試してみると、alert((![]+[])[+!![]])とalert("a")は同じ出力である。
0は+[]によって作られる。ここで、[]は空の配列であり、+は単項プラス(英語版)である。ここに型変換が働いて、[]は0とみなされる。
1は+!![] か +!+[]で、論理値true (JSFuckでは!![]か!+[]として表現される)が数字の1に変換されたものである。
2から9については、!![](前述の通り1)をその回数だけ繰り返し、それを+で連結すれば良い。これを踏まえると2は!![]+!![]や!+[]+!+[]と書くことができる。
2桁以上の場合は、1桁ずつ数字として配列に詰めたあと、それを1要素連結すればよい。例として"10"は[1] + [0]と書き換えることができる。前述の0と1の作り方を適用すると、これは[+!+[]]+[+[]]となる。数値を返したい場合は、頭に+をつける(この例では10 = +([+!+[]]+[+[]]))