Semikolons nach Funktionsdeklarationen sind nicht erforderlich .
Die Grammatik von a FunctionDeclaration
wird in der Spezifikation wie folgt beschrieben :
function Identifier ( FormalParameterListopt ) { FunctionBody }
Es ist kein Semikolon grammatikalisch erforderlich, aber fragen Sie sich vielleicht warum?
Semikolons dienen dazu, Aussagen voneinander zu trennen, und a FunctionDeclaration
ist keine Aussage .
FunctionDeclarations
werden ausgewertet, bevor der Code ausgeführt wird. Heben ist ein gebräuchliches Wort , um dieses Verhalten zu erklären.
Die Begriffe "Funktionsdeklaration" und "Funktionsanweisung" werden häufig fälschlicherweise synonym verwendet, da in der ECMAScript-Spezifikation keine Funktionsanweisung beschrieben ist. Es gibt jedoch einige Implementierungen, die eine Funktionsanweisung in ihrer Grammatik enthalten, insbesondere Mozilla ist nicht Standard.
Es werden jedoch immer Semikolons empfohlen, wenn Sie FunctionExpressions
beispielsweise Folgendes verwenden :
var myFn = function () {
//...
};
(function () {
//...
})();
Wenn Sie das Semikolon nach der ersten Funktion im obigen Beispiel weglassen, erhalten Sie völlig unerwünschte Ergebnisse:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Die erste Funktion wird sofort ausgeführt, da die Klammern, die die zweite umgeben, als Arguments
Funktionsaufruf interpretiert werden .
Empfohlene Vorträge:
Ich benutze sie nach Deklarationen von Funktion als Variable:
aber nicht nach klassischen Definitionen:
quelle
JS Lint ist eine De-facto-Konvention und sagt kein Semikolon nach dem Funktionskörper. Siehe den Abschnitt "Semikolon" .
quelle
Bleib einfach konsequent! Sie werden nicht benötigt, aber ich persönlich verwende sie, da die meisten Minifizierungstechniken auf dem Semikolon basieren (z. B. Packer ).
quelle
Kommt wirklich nur auf deine Vorlieben an. Ich mag es, Codezeilen mit Semikolons zu beenden, weil ich an Java, C ++, C # usw. gewöhnt bin. Daher verwende ich dieselben Standards für die Codierung in Javascript.
Normalerweise beende ich Funktionsdeklarationen nicht in Semikolons, aber das ist nur meine Präferenz.
Die Browser werden es so oder so ausführen, aber vielleicht werden sie eines Tages strengere Standards finden, die dies regeln.
Beispiel für Code, den ich schreiben würde:
quelle
Es ist eigentlich mehr als eine Frage der Konvention oder Konsistenz.
Ich bin mir ziemlich sicher, dass das Platzieren von Semikolons nach jeder Anweisung den internen Parser verlangsamt, da er herausfinden muss, wo sich das Ende der Anweisung befindet. Ich wünschte, ich hätte ein paar nützliche Zahlen, mit denen Sie das positiv bestätigen könnten, aber vielleicht können Sie es selbst googeln. :) :)
Wenn Sie Code komprimieren oder minimieren, kann ein Mangel an Semikolons zu einer minimierten Version Ihres Skripts führen, die nicht das tut, was Sie wollten, da der gesamte Leerraum verschwindet.
quelle
Als ich meine Skripte verkleinerte, wurde mir klar, dass ich für Funktionen, die mit der Gleichheitsnote beginnen, ein Semikolon verwenden muss. Wenn Sie eine Funktion als var definieren, müssen Sie ein Semikolon verwenden.
brauche Semikolon
kein Semikolon erforderlich
quelle
EINFACH:
Es wird empfohlen, die Semikolons
;
nach dem Ende der Funktionsklammern zu belassen. Sie gelten seit Jahren als Best Practice.Ein Vorteil der ständigen Verwendung besteht darin, dass Sie Ihr JavaScript minimieren möchten.
Durch die Minimierung von Javascript wird die Dateigröße etwas reduziert.
Die oben empfohlene Vorgehensweise und Antwort wird jedoch nicht empfohlen, sie nach einem Funktionstag zu verwenden.
Wenn Sie KEINE Semikolons verwenden und minimieren möchten (wie es viele Entwickler gerne tun, wenn ihre Website viel JavaScript enthält), können alle möglichen Fehler / Warnungen angezeigt werden.
quelle
Das Semikolon nach einer Funktion, die nicht verwendet werden muss oder nicht, verursacht keine Fehler in Ihrem Programm. Wenn Sie jedoch vorhaben, Ihren Code zu minimieren, ist die Verwendung von Semikolons nach Funktionen eine gute Idee. Nehmen wir zum Beispiel an, Sie haben Code wie den folgenden
und
Wenn Sie beide minimieren, erhalten Sie Folgendes als Ausgabe
Beachten Sie, dass Kommentare nur zur Veranschaulichung dienen
und
quelle