Einige Details zu Semikolons in JavaScript

Einige Details zu Semikolons in JavaScript

Vorwort

Semikolons sind in JavaScript optional und ihre Verwendung ist in erster Linie eine Frage des Codierstils. Ein Stil besteht darin, Semikolons zu verwenden, um Anweisungen explizit zu beenden, auch wenn sie nicht erforderlich sind; ein anderer Stil besteht darin, Semikolons so weit wie möglich zu vermeiden und sie nur bei Bedarf hinzuzufügen. Ich persönlich mag das Hinzufügen von Semikolons nicht, aber es gibt natürlich viele Freunde, die das mögen. Welchen Stil Sie auch bevorzugen, es gibt einige Details zu Semikolons in JavaScript, die Sie kennen sollten.

Die Rolle von Semikolons im Code

Die Hauptfunktion des Semikolons besteht darin, als Anweisungsbehauptung (EOS) eine Programm-Anweisung zu beenden. Der Zweck besteht darin, dem Parser die korrekte Analyse des Programms zu ermöglichen. In vielen Sprachen im C-Stil wird ein Semikolon verwendet, um eine Anweisungszeile explizit zu beenden, hauptsächlich um den Entwicklungsaufwand für den Sprachcompiler zu reduzieren. Moderne Compiler sind jedoch intelligent genug, um mehrzeilige Anweisungen gut verarbeiten zu können. Viele Sprachen erfordern keine expliziten Semikolon-Endungen, wie etwa Go, Scala, Ruby, Python, Swift, Groovy usw.

Obwohl JavaScript eine C-ähnliche Sprache ist, unterscheidet es sich von C und Java. Semikolons sind in JavaScript ebenfalls optional und es verfügt über einen automatischen Semikolon-Einfügemechanismus namens Auto Semicolon Insertion (ASI).

Automatischer Semikolon-Einfügungsmechanismus in JavaScript

JavaScript verfügt über einen Mechanismus namens „Automatische Semikolon-Einfügung“ oder kurz ASI. Es gibt eine klare Aussage zur automatischen Semikolon-Einfügung in ECMA-262 – Automatische Semikolon-Einfügung:

Analysieren Sie das Programm von links nach rechts. Wenn ein Token (anstößiges Token) gefunden wird, das keiner Grammatikproduktionsregel entspricht, wird automatisch ein Semikolon vor dem anstößigen Token eingefügt, sofern eine der folgenden Bedingungen erfüllt ist:

  • Mindestens ein Zeilenabschluss trennt das fehlerhafte Token vom vorherigen Token.
  • Das fehlerhafte Token ist }.

Analysieren Sie das Programm von links nach rechts. Der Eingabestrom der Token ist beendet. Wenn der Parser den Eingabe-Token-Strom nicht in ein einziges vollständiges ECMAScript-Programm zerlegen kann, wird am Ende des Eingabestroms automatisch ein Semikolon eingefügt.

Analysieren Sie das Programm von links nach rechts. Wenn Sie auf ein Token stoßen, das von einigen Grammatikproduktionsregeln zugelassen ist, es sich jedoch um eine eingeschränkte Operation handelt (Restricted Productions), wird automatisch ein Semikolon vor dem eingeschränkten Token eingefügt, wenn mindestens ein Zeilenumbruchzeichen das eingeschränkte Token vom vorherigen Token trennt.

Allerdings hat die obige Regel eine zusätzliche Vorrangbedingung: Wenn das Ergebnis der Analyse nach dem Einfügen des Semikolons eine leere Anweisung ist oder wenn es nach dem Einfügen des Semikolons zu einem der beiden Semikolons im Kopf der for-Anweisung wird, wird automatisch kein Semikolon eingefügt.

Hinweis: Die obige Übersetzung ist etwas umständlich. Sie können sie mehrmals lesen oder den englischen Originaltext ECMA-262 - Automatische Semikolon-Einfügung lesen.

Automatisches Einfügen von Semikolon

Kurz zusammengefasst basiert das automatische Einfügen von Semikolons auf Zeilenumbrüchen. Der Parser versucht, neue Zeilen in die aktuelle Zeile einzufügen. Neue Zeilen werden nur dann als unabhängige Anweisungen behandelt, wenn sie den ASI-Regeln entsprechen.

Die wichtigsten Regeln für die automatische Einfügung lauten wie folgt:

  1. Wenn eine neue Zeile in die aktuelle Zeile eingefügt wird, stellt dies eine ungültige Anweisung dar und kann nicht richtig analysiert werden. Es wird automatisch ein Semikolon eingefügt.
  2. Wenn eine neue Zeile mit } beginnt, wird am Ende des Codeblocks automatisch ein Semikolon eingefügt.
  3. Beim Beenden mit einer return-Anweisung wird automatisch ein Semikolon am Ende der Zeile eingefügt
  4. Beim Beenden mit einer break-Anweisung wird automatisch ein Semikolon am Ende der Zeile eingefügt
  5. Beim Beenden mit einer Throw-Anweisung wird automatisch ein Semikolon am Ende der Zeile eingefügt
  6. Beim Beenden mit einer continue-Anweisung wird automatisch ein Semikolon am Ende der Zeile eingefügt
  7. Fügt automatisch ein Semikolon am Ende einer Zeile ein, wenn diese mit einer ES6-Yield-Anweisung endet
  8. ++, -- Der Suffixausdruck wird als Anfang einer neuen Zeile verwendet und am Anfang der Zeile wird automatisch ein Semikolon eingefügt
  9. Automatisches Einfügen einer Nummer am Ende der Quellcodedatei

Wenn, wie oben gezeigt, das Semikolon nicht hinzugefügt wird, führt die Ausführung dieses Codes zu einem Fehler.

Semikolons können nicht weggelassen werden

Wenn eine Anweisung mit (, [, /, +, - beginnt, kann sie normalerweise als Teil der Anweisung in der vorherigen Zeile interpretiert werden. In der Praxis gibt es nur sehr wenige Anweisungen, die mit /, +, - beginnen. Anweisungen, die mit (, [ beginnen, sind jedoch sehr häufig und ich kann normalerweise ohne weiteres ein Semikolon am Zeilenanfang hinzufügen.

Zuvor haben wir etwas über das automatische Einfügen von Semikolons gelernt. Sehen wir uns nun einige Beispiele an.

lass hey = "hey"
['liu','liuxing'].fürEach(console.log)

Denken Sie eine Sekunde darüber nach. Was ist das obige Ergebnis? Das Ausführen dieses Codes löst

Nicht abgefangener TypeError: Eigenschaft „forEach“ von undefined kann nicht gelesen werden

Basierend auf Regel 1 wird der obige Code in den folgenden Code zerlegt

let hey = 'hey'['liu','liuxing'].forEach(console.log)

Es ist ersichtlich, dass die Verwendung einer Anweisung, die mit [ beginnt, ohne davor ein Semikolon zu haben, wahrscheinlich einen Fehler verursacht.

Schauen wir uns einen weiteren Beispielcode einer Anweisung an, die mit ( beginnt.

Konstante a = 1
Konstante b = 2
Konstante c = a + b
(a + b).toString()

Würden Sie erwarten, dass der obige Code einen Wert von „3“ erzeugt? Tatsächlich wird jedoch der Fehler „b ist keine Funktion“ ausgegeben, da es gemäß den ASI-Regeln in den folgenden Code zerlegt wird:

const a = 1;const b = 2;const c = a + b(a + b).toString()

Wir werden die Fälle, in denen /, +, - am Anfang einer Anweisung verwendet werden, nicht einzeln vorstellen. Diese Situation ist relativ selten, Sie können es also selbst ausprobieren. Denken Sie daran, dass Sie vor einer Anweisung ein Semikolon einfügen müssen, wenn sie mit (, [, /, + oder - beginnt!

Schauen wir uns als Nächstes die Verwendung von „return“ an.

(() => {
  zurückkehren
  {
    Name: „Liu Xing“
  }
})()

Sie erwarten die Rückgabe eines Objekts mit Namen, es wird jedoch „Undefiniert“ zurückgegeben. Dies liegt daran, dass ASI der Rückgabe automatisch ein Semikolon hinzufügt. Hier müssen Sie Ihre Zeilen richtig umbrechen, um sicherzustellen, dass der Code korrekt ausgeführt wird. Wir sehen, dass wir neben korrekten Semikolons auch korrekte und sinnvolle Zeilenumbrüche benötigen, um die Codestruktur übersichtlicher zu gestalten.

Zusammenfassen

Wir haben den automatischen Semikolon-Einfügungsmechanismus von JavaScript kennengelernt und wissen, wann JavaScript automatisch Semikolons hinzufügt. Wir müssen Semikolons am Anfang von (, [, /, + und - genau hinzufügen. Der automatische Semikolon-Einfügungsmechanismus bietet uns zwei Optionen: Semikolons hinzufügen oder nicht? Das hängt ganz von Ihren oder den Vorlieben Ihres Teams ab. Jetzt haben wir auch Tools wie Prettier und Eslint, um den Stil automatisch zu vereinheitlichen.

Dies ist das Ende dieses Artikels über Semikolons in JavaScript. Weitere relevante Inhalte zu Semikolons in JavaScript finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • JS-Validierung mehrerer E-Mails anhand regulärer Ausdrücke, vollständige Beispiele [E-Mails durch Semikolon getrennt]
  • Eine kurze Diskussion über die Verwendung von Semikolons in JavaScript
  • JavaScript-Syntax: Automatische Semikolon-Einfügung
  • Über das Semikolon nach JavaScript-Anweisungen
  • Ein durch JS-Semikolon verursachtes Debugging-Problem
  • Beispiel für einen Semikolon-Absturz in js
  • Zusammenfassung und detaillierte Einführung des Javascript-Semikolons
  • Eine kurze Analyse des Mechanismus zur automatischen Semikolon-Einfügung (ASI) von Javascript
  • So verhindern Sie, dass JavaScript automatisch Semikolons einfügt
  • Eine detaillierte Einführung in den Semikolon-Einfügungsmechanismus in JavaScript

<<:  Linux-Konfiguration SSH passwortfreie Anmeldung "ssh-keygen" grundlegende Nutzung

>>:  Perfekte Lösung für das Problem, dass Daten abgeschnitten werden, wenn die Funktion „group concat“ in Mysql5.7 verwendet wird

Artikel empfehlen

Detaillierte Erklärung langsamer MySQL-Abfragen

Informationen zu MySQL-Vorgängen abfragen Status ...

Detailliertes Linux-Installationstutorial

(Win7-System) Tutorial zur Installation einer vir...

So reduzieren Sie die Bildgröße mithilfe des mehrstufigen Docker-Builds

In diesem Artikel wird beschrieben, wie Sie die m...

Zusammenfassung von Beispielen gängiger Methoden von JavaScript-Arrays

Inhaltsverzeichnis Gängige Array-Methoden concat(...

So ändern Sie das Kennwort von mysql5.7.20 unter Linux CentOS 7.4

Nach dem Upgrade von MySQL auf Version 5.7 wurde ...

So reduzieren Sie die Speicher- und CPU-Auslastung von Webseiten

<br />Einige Webseiten sehen nicht groß aus,...

Kontext und Eigenschaften von React erklärt

Inhaltsverzeichnis 1. Kontext 1. Anwendungsszenar...

Zusammenfassung einiger verwandter Vorgänge geplanter Linux-Aufgaben

Ich habe verschiedene große Websites durchsucht u...