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.