Cela m'avait confondu pour plus de temps. Je pensais que c'était juste une différence de culture, et que tout le monde se plaindre de point-virgule insertion étant le pire aspect de la langue était un idiot. La lancinante exemple de NullUserException la réponse de ne pas me balancent parce que, en faisant abstraction de l'indentation, Python a le même comportement que le JavaScript dans ce cas.
Puis un jour, j'ai écrit vaguement quelque chose comme ceci:
alert(2)
(x = $("#foo")).detach()
Je m'attendais à être interprété comme ceci:
alert(2);
(x = $("#foo")).detach();
Il a effectivement été interprété comme ceci:
alert(2)(x = $("#foo")).detach();
Je vais maintenant utiliser des points-virgules.
JavaScript, seulement1 traiter un retour à la ligne comme un point-virgule dans ces cas:
- C'est une erreur de syntaxe.
- Le retour à la ligne est entre l'
throw
ou return
mot-clé et une expression.
- Le retour à la ligne est entre l'
continue
ou break
mot-clé et d'un identifiant.
- Le retour à la ligne est entre une variable et d'un suffixe
++
ou --
de l'opérateur.
Cela laisse les cas de ce genre où le comportement n'est pas ce que vous attendez. Certaines personnes,2 ont adopté des conventions qui utilisent uniquement des points-virgules, si nécessaire. Je préfère suivre la norme de la convention de toujours le faire avec eux, maintenant que je sais qu'il n'est pas inutile.
1 j'ai omis quelques détails mineurs, consulter ECMA-262 5e Section 7.9 pour la description exacte.
2Twitter Bootstrap est un exemple très connu.