Les points-virgules ne sont pas toujours obligatoires, mais je recommande toujours de les utiliser. Voir la ECMAScript spec pour les règles d'insertion des points-virgules automatique:
Certaines déclarations ECMAScript (instruction vide, LaVariable, déclaration d'expression , déclaration do-while, instruction continue, instruction break , déclaration de retour, et throw) doit être terminé avec des points-virgules. De tels points-virgules peuvent toujours apparaître explicitement dans le texte source . Par souci de commodité, cependant, ces points-virgules peuvent être omis à partir du texte source dans certaines situations. Ces situations sont décrites en disant que les points-virgules sont automatiquement insérés dans le flux de jeton de code source dans ces situations.
Mise à jour (pour expliquer plus en détail)
Peut-être la situation la plus courante utilisée pour montrer pourquoi l'insertion automatique de virgule peut être mauvais est que touché par @sissonb dans une autre réponse. Considérez ce qui suit:
function something(a, b) {
return
a + b;
}
Ce que vous attend peut-être doit être ignoré pour la nouvelle ligne, et le code interprété comme:
function something(a, b) {
return a + b;
}
Malheureusement, l'insertion de virgule automatique entre en jeu, et le code est en fait interprété comme ceci:
function something(a, b) {
return;
a + b;
}
Et une déclaration return
vide signifie que la fonction retourne undefined
. Donc, au lieu d'une belle somme des deux arguments, vous obtenez undefined
et potentiellement finir très confus quant à l'endroit où vous avez mal tourné! C'est pourquoi je suis entièrement d'accord avec l'affirmation dans votre question que l'insertion automatique de points-virgules est une erreur horrible.
Voir: http://stackoverflow.com/questions/7219541/what-is-the-difference-between-semicolons-in-javascript-and-in-python/7219549#7219549 et d'autres réponses à la question – NullUserException
Vos deux déclarations ont toutes les deux des points-virgules - aucune n'est différente. – Nightfirecat
@Nightfirecat - Ils n'ont pas à l'origine, ressemble à l'édition de NullUserException remettre le point-virgule. Edit: mais ensuite retiré à nouveau! –