JavaScript Standard Style

EnglishEspañol (Latinoamérica)FrançaisItaliano (Italian)한국어 (Korean)Português (Brasil)简体中文 (Simplified Chinese)繁體中文 (Taiwanese Mandarin)

js-standard-style

Ceci est un sommaire des règles du standard JavaScript.

La meilleure façon d'apprendre plus sur standard c'est de l'installer et de l'essayer dans votre code.

Règles

Point-virgules

Lecture utile

Et une video:

Tous les minificateurs populaires de code utilisés aujourd'hui utilisent la minification basées sur AST, donc ils peuvent manipuler le JavaScript sans point-virgules sans problème (depuis que les point-virgules ne sont pas requis avec JavaScript).

Extrait de "An Open Letter to JavaScript Leaders Regarding Semicolons":

[Compter sur l'insertion automatique de point-virgule] est plutot sur, et est une syntaxe JavaScript parfaitement valide que chaque navigateur comprend. Closure compiler, yuicompressor, packer, et jsmin peuvent tous le minifier proprement. Il n'y a pas d'impact sur la performance.

Je regrette qu'au lieu de vous éduquer, les leaders de cette communauté vous ont mentis. C'est honteux. Je recommende apprendre comment les instructions en JavaScript se terminent (et dans quels cas elles ne se terminent pas), pour que vous puissiez écrire du code qui vous plait.

En general, \n termine une instruction sauf si:

  1. L'instruction a une parenthèse qui n'est pas fermée, un tableau ou objet littéral ou finit d'une facon qui n'est pas valide. (Par exemple, avec un . ou ,.)
  2. La ligne est -- ou ++ (au quel cas il diminuera ou augmentera l'element qui suit.)
  3. C'est un for(), while(), do, if(), ou else, et il n'y a pas de {
  4. La prochaine ligne commence par[, (, +, *, /, -, ,, ., ou un autre opérateur binaire qui peut seulement être placé entre deux éléments dans une seule expression.

Le premier point est plutôt évident. Même JSLint est ok avec les charactères \n en format JSON et les constructeurs entre parenthèses, et avec les instructions var qui couvrent plusieurs lignes finissant par ,.

Le second point est super bizarre. Je n'ai jamais vu un cas (en dehors de ce genre de conversations) ou vous voudriez écrire i\n++\nj, qui, au fait, est analysé comme i; ++j, et pas i++; j.

Le troisième est bien compris, même si généralement méprisé. if (x)\ny() est l'equivalent de if (x) { y() }. Le concept ne finit pas jusqu'à ce qu'il atteigne un bloc ou une instruction.

; est une instruction valide, donc if(x); est equivalent à if(x){} ou, “If x, do nothing.” C'est plus couramment appliqué aux boucles ou la boucle vérifie aussi si la fonction est mise à jour. C'est pas courant, mais ça arrive.

Le quatrième est généralement le cas “oh non, vous avez besoin de point-virgules!”. Mais, il s'avère qu'il est plutot facile de prefixer ces lignes avec des point-virgules si vous n'avez pas l'intention de les utiliser comme continutions de la ligne précédente. Par exemple, au lieu de ça:

foo();
[1,2,3].forEach(bar);

vous pourriez faire ça:

foo()
;[1,2,3].forEach(bar)

L'avantage c'est que les prefixes sont plus faciles à remarquer, quand vous êtes habitués à ne jamais voir de lignes commencant par ( ou [ sans point-virgules.