52 votes

Recommandez-vous d'utiliser des points-virgules après chaque instruction en JavaScript ?

Dans de nombreuses situations, les analyseurs JavaScript insèrent les points-virgules à votre place si vous les omettez. Ma question est la suivante : les laissez-vous de côté ?

Si vous n'êtes pas familier avec les règles, vous trouverez une description de l'insertion du point-virgule sur le site Web de la Commission européenne. Site de Mozilla . Voici le point essentiel :

Si la première à la n th d'une forme de programme JavaScript sont grammaticalement valides mais le premier jusqu'au n+1. st ne le sont pas et il y a un saut de ligne entre les jetons n th et les jetons n+1 st puis l'analyseur tente à nouveau d'analyser le programme après avoir inséré un point-virgule virtuel entre les n th et le n+1 st jetons.

Cette description est peut-être incomplète, car elle n'explique pas l'exemple de @Dreas. Quelqu'un a un lien vers les règles complètes, ou voit pourquoi l'exemple obtient un point-virgule ? (Je l'ai essayé en JScript.NET.)

Cette question de stackoverflow est lié, mais ne parle que d'un scénario spécifique.

74voto

Oui, vous devez utiliser des points-virgules après chaque déclaration en JavaScript.

44voto

Un cas ambigu qui se casse en l'absence de point-virgule :

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

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

Ceci sera interprété comme :

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

Nous finissons par passer la deuxième fonction en tant qu'argument à la première fonction, puis nous essayons d'appeler le résultat du premier appel de fonction en tant que fonction. La deuxième fonction échouera avec une erreur "... n'est pas une fonction" au moment de l'exécution.

16voto

Oui, vous devez toujours utiliser des points-virgules. Pourquoi ? Parce que si vous finissez par utiliser un compresseur JavaScript, tout votre code sera sur une seule ligne, ce qui cassera votre code.

Essayez http://www.jslint.com/ Il vous blessera, mais vous montrera de nombreuses façons d'écrire un meilleur JavaScript (et l'une de ces façons est de toujours utiliser les points-virgules).

11voto

Ce que tout le monde semble oublier, c'est que les points-virgules en JavaScript ne sont pas des déclarations. terminateurs mais déclaration séparateurs . C'est une différence subtile, mais elle est importante pour la façon dont l'analyseur syntaxique est programmé. Traitez-les comme ce qu'ils sont et vous trouverez que les laisser de côté sera beaucoup plus naturel.

J'ai programmé dans d'autres langues où le point-virgule est une déclaration. séparateur et également facultatif, car l'analyseur syntaxique effectue l'"insertion de points-virgules" sur les nouvelles lignes lorsque cela n'enfreint pas la grammaire. Je n'étais donc pas étranger à ce phénomène lorsque je l'ai trouvé en JavaScript.

Je n'aime pas le bruit dans un langage (c'est une des raisons pour lesquelles je suis mauvais en Perl) et les points-virgules sont du bruit en JavaScript. Je les omets donc.

10voto

Je dirais La cohérence est plus importante que l'économie de quelques octets. . Je mets toujours des points-virgules.

D'autre part, j'aimerais souligner qu'il existe de nombreux endroits où le point-virgule n'est pas syntaxiquement nécessaire, même si un compresseur élimine tous les espaces blancs disponibles, par exemple à la fin d'un bloc.

if (a) { b() }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X