Formattatore JavaScript
Indenta uno script perché tu possa leggerlo, interamente nel tuo browser. Nessun a capo che hai scritto viene mai tolto.
Gira interamente nel tuo browser. Non viene caricato, registrato o salvato niente.
Incolla uno script minificato o indentato male e leggilo come si deve. La formattazione avviene nel tuo browser, e del codice non cambia niente oltre agli spazi.
Come funziona
Lo script viene diviso in pezzi — commenti, stringhe, template literal, espressioni regolari, numeri, nomi, operatori, parentesi — e poi riscritto. Un blocco riceve le proprie righe e un livello di rientro, un'istruzione riceve una riga, e un oggetto letterale distribuito su più righe riceve una voce per riga.
Nessun a capo che hai scritto viene mai tolto, ed è la regola da cui discende tutto il resto. In JavaScript la fine di una riga può chiudere un'istruzione — l'inserimento automatico del punto e virgola — quindi unire due righe in una può cambiare quello che fa un programma, o impedirne l'analisi. Gli a capo vengono solo aggiunti: attorno alle graffe di un blocco, dopo il punto e virgola di un'istruzione, tra le voci di un oggetto, e tra una graffa di chiusura e la parola che apre l'istruzione successiva. Nessuno di questi può cambiare un significato.
Una riga che il codice sorgente ha spezzato in mezzo a un'istruzione — una catena di chiamate, una condizione lunga, i rami di un condizionale — viene rientrata di un livello rispetto alla riga sopra, così continua a leggersi come parte di quella.
Esempi
| Caso | Dati inseriti | Risultato |
|---|---|---|
| Una funzione scritta su una riga | function add(a,b){const total=a+b;return total} | function add(a, b) { const total = a + b; return total } |
Domande frequenti
Il mio codice viene inviato da qualche parte?
No. Il formattatore è JavaScript che gira in questa pagina. Non viene caricato niente, non viene registrato niente e non viene salvato niente: puoi staccare la rete e lo strumento continua a funzionare.
Aggiungerà i punti e virgola che ho tralasciato?
No. Un punto e virgola che non è stato scritto a volte è un punto e virgola che non va scritto, e distinguere quei casi richiede un analizzatore e non una passata di disposizione. Il formattatore lascia stare la questione: non aggiunge mai un punto e virgola e non toglie mai un a capo, quindi il codice scritto senza continua a funzionare esattamente come prima.
Minifica anche?
No, ed è una decisione e non una dimenticanza. Minificare significa rinominare, riscrivere e decidere quali a capo hanno significato: tre giudizi che questo strumento esiste apposta per non dare. Sbagliarne uno rompe un programma in un modo di cui ti accorgi in produzione.
Capisce TypeScript o JSX?
In parte, e onestamente. Entrambi vengono letti come i token che sono, quindi non si perde niente e le parentesi continuano ad annidarsi, ma un'annotazione di tipo e un tag non sono cose di cui la disposizione conosca la forma. Aspettati un risultato sensato più che uno idiomatico.
Mi dirà se il mio script è valido?
No. Non ha grammatica, quindi non può: sa dove finisce un pezzo di codice e comincia il successivo, il che basta per impaginare un file e non basta per giudicarlo. Un file che non riesce proprio a leggere — una stringa, un commento o un template literal non chiusi — viene rifiutato invece che riformattato in qualcosa di plausibile.
Da sapere
- Il risultato contiene esattamente i pezzi che conteneva l'entrata. Non viene aggiunto niente, non viene tolto niente e non viene riordinato niente: si muovono solo gli spazi tra i pezzi.
- Una barra è o una divisione o l'inizio di un'espressione regolare, e nessun tokenizzatore può esserne sicuro senza una grammatica. Questo lo decide dal token precedente, e legge come divisione un letterale che dovrebbe attraversare un a capo, dato che un'espressione regolare non può contenerne uno. Un'ipotesi sbagliata costa ordine e nient'altro, perché ogni pezzo viene copiato esattamente come era scritto.
- Un template literal torna carattere per carattere, da accento grave ad accento grave. I suoi spazi sono il testo che mostrerà la tua pagina, quindi non sono spazi che il formattatore possa toccare.
- La disposizione è deterministica: lo stesso script con la stessa opzione produce sempre lo stesso risultato, e formattare uno script già formattato non cambia niente.