JavaScript-Formatierer
Ein Skript so einrücken, dass Sie es lesen können, vollständig in Ihrem Browser. Kein von Ihnen geschriebener Zeilenumbruch wird je entfernt.
Läuft vollständig in Ihrem Browser. Nichts wird hochgeladen, protokolliert oder gespeichert.
Fügen Sie ein minifiziertes oder schlecht eingerücktes Skript ein und lesen Sie es ordentlich. Formatiert wird in Ihrem Browser, und am Code ändert sich nichts außer seinem Leerraum.
Wie es funktioniert
Das Skript wird in Stücke zerlegt — Kommentare, Zeichenketten, Template-Literale, reguläre Ausdrücke, Zahlen, Namen, Operatoren, Klammern — und dann wieder ausgegeben. Ein Block bekommt eigene Zeilen und eine Einrückungsebene, eine Anweisung bekommt eine Zeile, und ein über mehrere Zeilen verteiltes Objektliteral bekommt einen Eintrag je Zeile.
Kein von Ihnen geschriebener Zeilenumbruch wird je entfernt, und das ist die Regel, aus der der Rest folgt. In JavaScript kann das Ende einer Zeile eine Anweisung beenden — automatisches Einfügen von Semikola —, zwei zu einer verbundene Zeilen können also ändern, was ein Programm tut, oder es am Parsen hindern. Umbrüche kommen nur hinzu: um die geschweiften Klammern eines Blocks, nach dem Semikolon einer Anweisung, zwischen den Einträgen eines Objekts und zwischen einer schließenden geschweiften Klammer und dem Wort, das die nächste Anweisung beginnt. Keines davon kann eine Bedeutung ändern.
Eine Zeile, die die Quelle mitten in einer Anweisung gebrochen hat — ein verketteter Aufruf, eine lange Bedingung, die Zweige einer Bedingung —, wird gegenüber der Zeile darüber eine Ebene eingerückt, damit sie weiterhin als Teil davon zu lesen ist.
Beispiele
| Fall | Eingabe | Ergebnis |
|---|---|---|
| Eine Funktion auf einer Zeile geschrieben | function add(a,b){const total=a+b;return total} | function add(a, b) { const total = a + b; return total } |
Häufige Fragen
Wird mein Code irgendwohin gesendet?
Nein. Der Formatierer ist JavaScript, das in dieser Seite läuft. Nichts wird hochgeladen, nichts protokolliert und nichts gespeichert — Sie können Ihre Netzwerkverbindung abschalten, und das Tool arbeitet weiter.
Fügt es die Semikola hinzu, die ich weggelassen habe?
Nein. Ein nicht geschriebenes Semikolon ist manchmal ein Semikolon, das nicht geschrieben werden darf, und das auseinanderzuhalten braucht einen Parser und keine Dispositionsschicht. Der Formatierer lässt die Frage in Ruhe: Er fügt nie ein Semikolon hinzu und entfernt nie einen Zeilenumbruch, Code ohne sie funktioniert also genau weiter wie zuvor.
Minifiziert es auch?
Nein, und das ist eine Entscheidung und kein Versäumnis. Minifizieren heißt umbenennen, umschreiben und entscheiden, welche Zeilenumbrüche Bedeutung tragen — drei Urteile, für deren Vermeidung dieses Tool existiert. Eines davon falsch zu fällen zerbricht ein Programm auf eine Art, von der Sie in der Produktion erfahren.
Versteht es TypeScript oder JSX?
Teilweise, und ehrlich gesagt. Beide werden als die Tokens gelesen, die sie sind, es geht also nichts verloren und die Klammern verschachteln sich weiterhin, aber eine Typannotation und ein Tag sind keine Dinge, deren Form die Disposition kennt. Erwarten Sie ein vernünftiges Ergebnis statt eines idiomatischen.
Sagt es mir, ob mein Skript gültig ist?
Nein. Es hat keine Grammatik und kann es daher nicht: Es weiß, wo ein Stück Code endet und das nächste beginnt, was genügt, um eine Datei zu setzen, und nicht genügt, um sie zu beurteilen. Eine Datei, die es überhaupt nicht lesen kann — eine nicht geschlossene Zeichenkette, ein nicht geschlossener Kommentar oder ein nicht geschlossenes Template-Literal —, wird abgelehnt statt in etwas Plausibles umformatiert.
Gut zu wissen
- Die Ausgabe enthält genau die Stücke, die die Eingabe enthielt. Nichts wird hinzugefügt, nichts weggelassen und nichts umgeordnet — nur der Leerraum dazwischen bewegt sich.
- Ein Schrägstrich ist entweder eine Division oder der Beginn eines regulären Ausdrucks, und kein Tokenizer kann ohne Grammatik sicher sein, welches von beiden. Dieser entscheidet nach dem Token davor und liest ein Literal, das über einen Zeilenumbruch reichen müsste, als Division, denn ein regulärer Ausdruck kann keinen enthalten. Eine falsche Vermutung kostet Ordentlichkeit und sonst nichts, denn jedes Stück wird genau so herauskopiert, wie es geschrieben war.
- Ein Template-Literal kommt Zeichen für Zeichen zurück, von Backtick zu Backtick. Sein Leerraum ist der Text, den Ihre Seite anzeigen wird, also kein Leerraum, den der Formatierer anfassen darf.
- Die Disposition ist deterministisch: Dasselbe Skript und dieselbe Option ergeben immer dieselbe Ausgabe, und ein bereits formatiertes Skript zu formatieren ändert nichts.