Toutes les notes

Contrairement à ce que laisse entendre une idée largement répandue, les points-virgules (;) ne sont pas obligatoires en JavaScript. Hormis quelques exceptions, un retour à la ligne aura exactement le même effet. Il ne s’agit pas d’une « tolérance » de certains navigateurs : cela fait partie de la spécification ECMAScript, et ce comportement (Automatic Semicolon Insertion) est parfaitement supporté par l’ensemble des moteurs JavaScript existants.

Isaac Z. Schlueter n’utilise les points-virgules que lorsqu’ils sont nécessaires dans ses scripts. Il a reçu beaucoup de critiques à ce sujet puisqu’il est l’auteur de npm, un projet très populaire dans la communauté Node.js. Il y a répondu sur son blog, en reprenant les arguments de ses détracteurs. Je trouve l’explication très claire : il présente en quelques lignes l’ensemble des règles, puis se concentre sur les seules exceptions qui comptent, c’est à dire celles que l’on rencontre vraiment en programmant.

L’article en question : An Open Letter to JavaScript Leaders Regarding Semicolons.

Je vous recommande également la lecture d’un autre document, JavaScript Semicolon Insertion: Everything you need to know. Inimino y décrit de manière plus approfondie toutes les subtilités de cette règle, et les exemples présentés sont très intéressants.

Pour terminer, il est important de préciser qu’aucun de ces auteurs n’essaie d’imposer cette manière de coder : il s’agit juste d’expliquer en quoi cette partie de JavaScript, qui a la réputation d’être « imprévisible », est tout à fait valide en plus d’être facile à maîtriser.

Une dernière chose, si vous utilisez JSHint, il vous suffit de placer ceci en haut de vos scripts pour désactiver l’erreur de point-virgule absent : /*jshint asi: true */

6 commentaires

Poster un commentaire

Flux RSS des commentaires de cet article

J’ai un projet web pour les cours, je suis sûr que si j’écris mon JS comme ça je me fais assassiner. xD

Le 03 oct. 2011 à 17h09 par Maarx

Perso, je ne vois même pas l’intérêt de ne pas être explicite sur les points-virgules;

Je ne vois que deux alternatives :
- ne pas les mettre quand ils sont implicites. Conséquence: il faut connaître toutes les petites règles, notamment celles qui peuvent rendre un code non-fonctionnel.
- les mettre systématiquement.
Conséquence pour le dev: pas besoin de réfléchir, il peut se concentrer sur l’important.
Conséquence collatérale: les outils peuvent checker plus facilement le code, et le minifier.

Le 03 oct. 2011 à 17h47 par JulienW

Mon discours n’est pas du tout que le code est moins valide ou moins sûr. Je suis conscient que ça existe, que ça fait partie du langage, etc.

Néanmoins je considère (personnellement:!-) ) qu’on a déjà assez de choses comme ça à faire attention.

Pour ce qui est des points-virgules en début de ligne, c’est encore une autre histoire ;)

Le 04 oct. 2011 à 15h17 par JulienW

Publiez un commentaire en remplissant les champs ci-dessous.
Les champs marqués d'une astérisque (*) sont obligatoires.

Les commentaires peuvent utiliser HTML ; seuls ces éléments sont autorisés : <a href="" title=""> <abbr title=""> <blockquote cite=""> <cite> <code> <em> <q cite=""> <strong> <pre>