Table des matières
Bonnes pratiques de JavaScript
Le JavaScript n'est pas le meilleur des langage de programmation. Il a ses faiblesses et c'est pour cette raison qu'il faut établir les bonnes pratiques.
Pratiques générales
Insertion automatique du point-vigule
Ne jamais se fier à l'insertion automatique du point-virgule qui peut arriver à la fin d'une ligne d'instruction. Toujours mettre soi-même tous les point-virgules nécessaires.
Par exemple, avec l'invocation de fonctions, qu'arrive-t-il avec ceci :
x = y (function () { console.log('ok'); }());
L'interpréteur va assigner y comme si c'était une fonction et que la fonction elle-même, sur la ligne suivante, était donnée en argument.
Style
Certainement, plusieurs ont subit le débat sur les accolades : faut-il les placer à droite ou sur la ligne suivante à gauche ?
if (true) { }
ou encore
if (true) { }
Une bonne raison de choisir plutôt l'un ou l'autre, vient du fait que le JavaScript met des ; automatiquement à la fin de certaines lignes d'instruction. Prendre par exemple ce code :
var resultat = (function () { return { ok: "allo" } })(); console.log(resultat.ok);
Quel sera le résultat ? Ce n'est pas évident à la première vue, mais ce sera undefined. L'interpréteur Javascript aura mis automatiquement un ; à la suite du return. Donc, au lieu de retourner l'objet contenant la propriété ok, la valeur de resultat sera indéfini. Il aura plutôt fallu écrire :
var resultat = (function () { return { ok: "allo" } })(); console.log(resultat.ok);
À ce moment on voit allo s'afficher dans la console.
Éviter la confusion
Instruction with
L'instruction with est à éviter dans JavaScript parce qu'il peut être difficile de comprendre l'intention du code.
with (o) { foo = koda; }
Lequel de ces assignations est effectuée :
o.foo = koda;o.foo = o.koda;foo = koda;- ou
foo = o.koda;
C'est difficile à dire. L'instruction with n'est pas typiquement nécessaire, donc on évite.
Transitivité
| Comparaison | Résultat |
|---|---|
0 == '' | true |
0 == '0' | true |
'' == '0' | false |
false == 'false' | false |
false == '0' | true |
" \t\r\n " == 0 | true |
Donc, toujours utiliser === et ne pas utiliser ==.
Multiline string literals
- Source : Douglas Crockford.
