The name is derived from Brainfuck, an esoteric programming language that also uses a minimalistic alphabet of only punctuation.
[1] In July 2009, Yosuke Hasegawa created a web application called jjencode which could encode arbitrary JavaScript into an obfuscated form utilizing only the 18 symbols []()!+,\"$.:;_{}~=.
[2][3] In January 2010, an informal competition was held in the "Obfuscation" forum of the sla.ckers.org web application security site to come up with a way to get the minimum number of characters required down to less than eight: []()!+,/.
[4] As of March 2010, an online encoder called JS-NoAlnum was available which utilized only the final set of six characters.
[6][7] In 2012, Martin Kleppe created a "jsfuck" project on GitHub,[8] and a JSFuck.com website with a web app using that implementation of the encoder.
[9] JSFuck can be used to bypass detection of malicious code submitted on websites, e.g. in cross-site scripting (XSS) attacks.
To get a numeric value instead of a string, one would enclose the previous expression in parentheses or square brackets and prepend a plus, yielding 10 = +([+!+[]]+[+[]]).
Some letters can be obtained in JSFuck by accessing single characters in the string representations of simple boolean or numeric values like "false", "true", "NaN", "undefined" with an indexer (a number in square brackets).
[13] The following is a list of primitive values used as building blocks to produce the most simple letters.