Antworten:
Semikolons nach Funktionsdeklarationen sind nicht erforderlich .
Die Grammatik von a FunctionDeclarationwird 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 FunctionDeclarationist keine Aussage .
FunctionDeclarationswerden 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 FunctionExpressionsbeispielsweise 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 ArgumentsFunktionsaufruf interpretiert werden .
Empfohlene Vorträge:
FunctionDeclarationvs FunctionExpression)Ich benutze sie nach Deklarationen von Funktion als Variable:
var f = function() { ... };
aber nicht nach klassischen Definitionen:
function f() {
...
}
JS Lint ist eine De-facto-Konvention und sagt kein Semikolon nach dem Funktionskörper. Siehe den Abschnitt "Semikolon" .
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 ).
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:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
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.
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
var x = function(){};
var x = new function(){};
this.x = function(){};
kein Semikolon erforderlich
function x(){}
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.
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
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
und
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
Wenn Sie beide minimieren, erhalten Sie Folgendes als Ausgabe
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
und
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};