Réponses:
Les points-virgules après les déclarations de fonction ne sont pas nécessaires .
La grammaire de a FunctionDeclaration
est décrite dans la spécification comme suit:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Il n'y a pas de point-virgule grammaticalement requis, mais vous demandez-vous pourquoi?
Les points-virgules servent à séparer les déclarations les unes des autres, et a FunctionDeclaration
n'est pas une déclaration .
FunctionDeclarations
sont évalués avant que le code ne soit exécuté, le hissage est un mot courant utilisé pour expliquer ce comportement.
Les termes "déclaration de fonction" et "instruction de fonction" sont souvent utilisés à tort de manière interchangeable, car il n'y a pas d'énoncé de fonction décrit dans la spécification ECMAScript, mais certaines implémentations incluent une déclaration de fonction dans leur grammaire, notamment Mozilla, mais encore une fois cette est non standard.
Cependant, les points-virgules sont toujours recommandés là où vous utilisez FunctionExpressions
, par exemple:
var myFn = function () {
//...
};
(function () {
//...
})();
Si vous omettez le point-virgule après la première fonction dans l'exemple ci-dessus, vous obtiendrez des résultats complètement indésirables:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
La première fonction sera exécutée immédiatement, car les parenthèses entourant la seconde seront interprétées comme celles Arguments
d'un appel de fonction.
Conférences recommandées:
FunctionDeclaration
vs FunctionExpression
)Je les utilise après des déclarations de fonction en tant que variable:
var f = function() { ... };
mais pas après les définitions de style classique:
function f() {
...
}
JS Lint est une convention de facto et ne dit pas de point-virgule après le corps de la fonction. Voir la section "Point-virgule" .
Restez juste cohérent! Ils ne sont pas nécessaires, mais je les utilise personnellement car la plupart des techniques de minification reposent sur le point-virgule (par exemple, Packer ).
Cela dépend vraiment de vos préférences. J'aime terminer les lignes de code avec des points-virgules parce que je suis habitué à Java, C ++, C #, etc., donc j'utilise les mêmes normes pour le codage en javascript.
Je ne termine généralement pas les déclarations de fonction en point-virgule, mais c'est juste ma préférence.
Les navigateurs l'exécuteront de toute façon, mais peut-être un jour ils proposeront des normes plus strictes régissant cela.
Exemple de code que j'écrirais:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
C'est en fait plus qu'une question de convention ou de cohérence.
Je suis assez certain que non placer de point-virgule après chaque instruction ralentit l'analyseur interne car il doit déterminer où se trouve la fin de l'instruction. J'aurais aimé avoir quelques chiffres à portée de main pour que vous le confirmiez positivement, mais vous pouvez peut-être le rechercher vous-même sur Google. :)
De plus, lorsque vous compressez ou réduisez du code, un manque de points-virgules peut conduire à une version réduite de votre script qui ne fait pas ce que vous vouliez car tout l'espace blanc disparaît.
Quand j'ai minifié mes scripts, j'ai réalisé que je devais utiliser un point-virgule pour les fonctions qui commencent par une marque égale. si vous définissez une fonction comme var, oui, vous devez utiliser un point-virgule.
besoin d'un point-virgule
var x = function(){};
var x = new function(){};
this.x = function(){};
pas besoin de point-virgule
function x(){}
FACILE:
Il est recommandé de laisser les points-virgules ;
après la fin des accolades de fonction. Ils sont considérés comme une meilleure pratique depuis des années.
Un avantage de toujours les utiliser est que vous souhaitez réduire votre JavaScript.
En minimisant le Javascript, aide à réduire un peu la taille du fichier.
Mais comme pour la meilleure pratique et la réponse ci-dessus, il n'est pas recommandé de l'utiliser après une balise de fonction.
Si vous N'utilisez PAS de points-virgules, et si vous souhaitez réduire (comme beaucoup de développeurs aiment le faire si leur site utilise beaucoup de JavaScript), vous pouvez obtenir toutes sortes d'erreurs / avertissements.
le point-virgule après une fonction n'est pas nécessaire de l'utiliser ou non, ne provoque pas d'erreurs dans votre programme. cependant, si vous prévoyez de réduire votre code, l'utilisation de points-virgules après les fonctions est une bonne idée. par exemple, vous avez un code comme celui ci-dessous
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
et
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
lorsque vous réduisez les deux, vous obtiendrez ce qui suit en sortie
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
et
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};