Le Javascript en mode hardcore
Posté le 26/08/2016
Le Javascript est un peu l'enfant raté dans les langages Web (ou pas). Régulièrement pointé du doigt, un ensemble de raisons techniques ou non font que les trolls à son sujet ne tarissent pas : syntaxe, typage faible, gestion des objets, mais aussi communauté de "fan boys" et explosion des dérivés foireux.
Moi j'aime bien avoir les yeux qui saignent en regardant des scripts JS. Car je l'avoue, c'est mon dada.
Et il y a quelques années, j'ai été comblé lorsque je suis tombé sur un article de developpez.net[1] : "Coder en JavaScript avec seulement six caractères", à savoir ([!+]).
Ça fait rêver n'est-ce pas ?
En (très) gros, le principe est de se baser sur les retours de différentes opérations (retours numériques, booléens, de type, mots-clés, etc...) pour ensuite récupérer les caractères qui nous intéressent.
Par exemple, pour "récupérer" la lettre "a", on peut utiliser cette opération :
# var a = (false+"")[1];
Mais comme nous, on est des warriors et qu'on a parlé de 6 caractères, on va complexifier l'ensemble. Et donc la lettre "a" pourra s'écrire :
# var a = (![]+[])[+!+[]];
Et là, c'est le drame. Vu la pirouette pour une simple lettre, imaginer désormais un code légèrement plus complet, tel que l'habituel :
# alert("Hello World");
Le résultat ? Eh bien c'est un pavé de Javascript de 50025 caractères que je vous ai placé sur un petit 0bin[2]. Vous pouvez même directement copier/coller l'ensemble dans la console de votre debug' préféré (genre Firebug, ...) pour exécuter le code et vérifier son bon fonctionnement.
Pour vérifier cela par vous même et vous amuser au passage, je vous invite à jeter un œil par ici[3], où il vous sera possible de "convertir" vos propres lignes de JS.
Préparez les mouchoirs, ça va saigner.
-----
[1] - Coder en JavaScript avec seulement six caractères
[2] - le lien vers le petit 0bin
[3] - 6chars.js
(Photo by Ryan Young)