Formateur JavaScript
Indentez un script pour le relire, entièrement dans votre navigateur. Aucun retour à la ligne que vous avez écrit n'est supprimé.
Fonctionne entièrement dans votre navigateur. Rien n'est envoyé, journalisé ni conservé.
Collez un script minifié ou mal indenté et relisez-le correctement. Le formatage a lieu dans votre navigateur, et rien du code n'est modifié au-delà de ses espaces.
Comment ça marche
Le script est découpé en éléments — commentaires, chaînes, littéraux de gabarit, expressions régulières, nombres, noms, opérateurs, parenthèses — puis réécrit. Un bloc obtient ses lignes et un niveau d'indentation, une instruction obtient sa ligne, et un objet littéral réparti sur plusieurs lignes obtient une entrée par ligne.
Aucun retour à la ligne que vous avez écrit n'est supprimé, et tout le reste en découle. En JavaScript, la fin d'une ligne peut terminer une instruction — c'est l'insertion automatique des points-virgules — si bien que deux lignes réunies en une seule peuvent changer ce que fait un programme, voire l'empêcher d'être analysé. Les retours à la ligne sont uniquement ajoutés : autour des accolades d'un bloc, après le point-virgule d'une instruction, entre les entrées d'un objet, et entre une accolade fermante et le mot qui commence l'instruction suivante. Aucun de ces quatre cas ne peut changer un sens.
Une ligne que la source a coupée au milieu d'une instruction — un enchaînement d'appels, une longue condition, les deux branches d'une expression conditionnelle — est indentée d'un niveau par rapport à la ligne du dessus, pour qu'elle continue de se lire comme sa suite.
Exemples
| Cas | Saisie | Résultat |
|---|---|---|
| Une fonction écrite sur une ligne | function add(a,b){const total=a+b;return total} | function add(a, b) { const total = a + b; return total } |
Questions fréquentes
Mon code est-il envoyé quelque part ?
Non. Le formateur est du JavaScript qui s'exécute dans cette page. Rien n'est téléversé, rien n'est journalisé et rien n'est stocké — vous pouvez couper votre connexion réseau, l'outil fonctionne toujours.
Va-t-il ajouter les points-virgules que j'ai omis ?
Non. Un point-virgule absent est parfois un point-virgule qui doit le rester, et faire la différence demande un analyseur syntaxique plutôt qu'une passe de mise en forme. Le formateur laisse la question de côté : il n'ajoute jamais de point-virgule et ne supprime jamais un retour à la ligne, si bien qu'un code écrit sans eux continue de fonctionner exactement comme avant.
Sait-il aussi minifier ?
Non, et c'est une décision plutôt qu'un oubli. Minifier, c'est renommer, réécrire et décider quels retours à la ligne portent du sens — trois jugements que cet outil existe précisément pour ne pas porter. Se tromper sur l'un d'eux casse un programme d'une manière que l'on découvre en production.
Comprend-il TypeScript ou JSX ?
En partie, et honnêtement. L'un comme l'autre sont lus comme les éléments qu'ils sont : rien n'est perdu et les parenthèses continuent de s'imbriquer, mais une annotation de type et une balise ne sont pas des formes dont la mise en page connaît le dessin. Attendez-vous à un résultat sensé plutôt qu'idiomatique.
Me dira-t-il si mon script est valide ?
Non. Il n'a pas de grammaire, donc il ne peut pas : il sait où finit un élément de code et où commence le suivant, ce qui suffit à mettre un fichier en forme et ne suffit pas à le juger. Un fichier qu'il ne peut pas lire du tout — une chaîne, un commentaire ou un littéral de gabarit jamais refermé — est refusé plutôt que reformaté en quelque chose de plausible.
Bon à savoir
- La sortie contient exactement les éléments que contenait l'entrée. Rien n'est ajouté, rien n'est retiré et rien n'est réordonné : seules les espaces qui les séparent bougent.
- Une barre oblique est soit une division, soit le début d'une expression régulière, et aucun découpage en éléments ne peut en être certain sans grammaire. Celui-ci tranche d'après l'élément qui précède, et lit comme une division un littéral qui devrait franchir un retour à la ligne, puisqu'une expression régulière ne peut pas en contenir. Une supposition fausse coûte de la lisibilité et rien d'autre, car chaque élément est recopié tel qu'il a été écrit.
- Un littéral de gabarit revient caractère pour caractère, d'un accent grave à l'autre. Ses espaces sont le texte que votre page affichera : ce ne sont pas des espaces que le formateur peut toucher.
- La mise en forme est déterministe : le même script et la même option produisent toujours la même sortie, et reformater un script déjà formaté ne change rien.