it-swarm.com.de

Empfehlen Sie die Verwendung von Semikolons nach jeder Anweisung in JavaScript?

In vielen Situationen fügen JavaScript-Parser Semikolons für Sie ein, wenn Sie sie weglassen. Meine Frage ist, lassen Sie sie aus?

Wenn Sie mit den Regeln nicht vertraut sind, finden Sie eine Beschreibung des Einfügens von Semikolons auf der Mozilla-Site . Hier ist der entscheidende Punkt:

Wenn der erste durch die nth Token einer JavaScript-Programmform sind grammatikalisch gültig, aber die ersten bis n + 1st Token gibt es nicht und es gibt einen Zeilenumbruch zwischen den nth Token und die n + 1st Token, dann versucht der Parser, das Programm erneut zu analysieren, nachdem ein virtuelles Semikolon-Token zwischen n eingefügt wurdeth und das n + 1st Token.

Diese Beschreibung ist möglicherweise unvollständig, da sie das Beispiel von @ Dreas nicht erklärt. Hat jemand einen Link zu den vollständigen Regeln oder sieht, warum das Beispiel ein Semikolon erhält? (Ich habe es in JScript.NET versucht.)

Diese Stapelüberlauf-Frage ist verwandt, spricht jedoch nur über ein bestimmtes Szenario.

52
anon

Ja, Sie sollten in JavaScript nach jeder Anweisung ein Semikolon verwenden.

74
anon

Ein mehrdeutiger Fall, der ohne Semikolon abbricht:

// define a function
var fn = function () {
    //...
} // semicolon missing at this line

// then execute some code inside a closure
(function () {
    //...
})();

Dies wird interpretiert als:

var fn = function () {
    //...
}(function () {
    //...
})();

Am Ende übergeben wir die zweite Funktion als Argument an die erste Funktion und versuchen dann, das Ergebnis des ersten Funktionsaufrufs als Funktion aufzurufen. Die zweite Funktion schlägt mit dem Fehler "... ist keine Funktion" zur Laufzeit fehl.

44
anon

Ja, Sie sollten immer Semikolons verwenden. Warum? Denn wenn Sie am Ende einen JavaScript-Kompressor verwenden, steht Ihr gesamter Code in einer Zeile, wodurch Ihr Code beschädigt wird.

Versuchen Sie http://www.jslint.com/ ; Es schadet Ihren Gefühlen, zeigt Ihnen aber viele Möglichkeiten, besseres JavaScript zu schreiben (und eine Möglichkeit besteht darin, immer Semikolons zu verwenden).

16
anon

Was jeder vermisst, ist, dass die Semikolons in JavaScript keine Anweisung Abschlusszeichen, sondern eine Anweisung Trennzeichen sind. Es ist ein subtiler Unterschied, aber es ist wichtig für die Art und Weise, wie der Parser programmiert wird. Behandle sie so, wie sie sind und du wirst feststellen, dass sie sich viel natürlicher anfühlen, wenn du sie weglässt.

Ich habe in anderen Sprachen programmiert, in denen das Semikolon eine Anweisung ist Trennzeichen und auch optional, da der Parser das Einfügen von Semikolons in Zeilenumbrüchen vornimmt, in denen die Grammatik nicht verletzt wird. Ich war also nicht unbekannt, als ich es in JavaScript fand.

Ich mag kein Rauschen in einer Sprache (was ein Grund ist, warum ich schlecht in Perl bin) und Semikolons sind Rauschen in JavaScript. Also lasse ich sie weg.

11
anon

Ich würde sagen konsistenz ist wichtiger als ein paar Bytes zu sparen. Ich füge immer Semikolons hinzu.

Andererseits möchte ich darauf hinweisen, dass es viele Stellen gibt, an denen das Semikolon nicht syntaktisch erforderlich ist, auch wenn ein Kompressor alle verfügbaren Leerzeichen blockiert. z.B. am Ende eines Blocks.

if (a) { b() }
10
anon

JavaScript fügt beim Interpretieren des Codes automatisch Semikolons ein. Wenn Sie also den Wert der return-Anweisung unter die Zeile setzen, wird dieser nicht zurückgegeben:

Dein Code:

return
5

JavaScript-Interpretation:

return;
5;

Daher wird aufgrund der automatischen Semikoloneinfügung von JavaScript nichts zurückgegeben

8
anon

Ich denke, das ähnelt dem, was der letzte Podcast besprochen hat. "Seien Sie liberal in dem, was Sie akzeptieren" bedeutet, dass zusätzliche Arbeit in den Javascript-Parser gesteckt werden musste, um Fälle zu beheben, in denen Semikolons weggelassen wurden. Jetzt haben wir eine Schiffsladung von Seiten mit schlechter Syntax im Umlauf, die eines Tages in der Zukunft brechen könnte, wenn sich ein Browser dazu entschließt, etwas strenger zu sein, was er akzeptiert. Diese Art von Regel sollte auch für HTML und CSS gelten. Sie können fehlerhaftes HTML und CSS schreiben, aber seien Sie nicht überrascht, wenn Sie merkwürdige und schwer zu debuggende Verhaltensweisen entwickeln, wenn ein Browser Ihren falschen Code nicht richtig interpretiert.

7
anon

Der Artikel Semikolons in JavaScript sind optional macht einige wirklich gute Punkte darüber, Semikolons in Javascript nicht zu verwenden. Es behandelt alle Punkte, die in den Antworten auf diese Frage angesprochen wurden.

6
anon

Dies ist genau das beste Erklärung für das automatische Einfügen von Semikolons , das ich überall gefunden habe. Es wird alle Ihre Unsicherheiten und Zweifel beseitigen.

5
anon

Ich benutze Semikolon, da es meine Gewohnheit ist. Jetzt verstehe ich, warum ich die Zeichenfolge nicht in zwei Zeilen teilen kann. Am Ende jeder Zeile steht ein Semikolon.

1
Perime

Nein, verwenden Sie nur Semikolons, wenn sie benötigt werden.

1
anon