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 :

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