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.

Fonti

Tutti gli strumenti di Codice