Structures conditionnelles

Comme les autres langages, Javascript offre des structures conditionnelles.

Une structure conditionnelle est une instruction permettant d'exécuter une (ou plusieurs) instruction(s) selon le succès ou l'échec d'une condition (plus ou moins complexe).

La structure conditionnelle "if"

L'écriture de cette instruction "if" est la suivante :

if (5 > 3) {
   // Instructions à exécuter si la condition est remplie ...
}

Dans l'exemple ci-dessus, l'ensemble d'instructions (dit bloc) encadré par des accolades est exécuté : la condition, définie entre parenthèses après le nom réservé "if", est remplie (5 est bien supérieur à 3).

Il est possible de prévoir un ensemble d'instructions alternatif lorsque la condition n'est pas remplie. Pour cela, on utilise le nom réservé "else" suivi de l'ensemble d'instructions à exécuter :

if (5 < 3) {
   // Instructions à exécuter si la condition est remplie ...
} else {
   // Instructions à exécuter si la condition n'est pas remplie ...
}

Dans l'exemple ci-dessus, l'ensemble d'instructions du else est exécuté ; la condition du if n'étant pas remplie (5 n'est pas inférieur à 3).

Enfin, il est possible de vérifier plusieurs conditions en associant les noms réservés "else if" :

var nombre = 5;
if (nombre < 3) {
   // Instructions à exécuter ...
} else if (nombre > 4) {
   // Autres instructions à exécuter ...
} else {
   // Autres instructions à exécuter ...
}

Dans l'exemple ci-dessus :

  1. la condition du "if" n'est pas remplie (5 n'est pas inférieur à 3) ;
  2. l'ensemble d'instructions du "if" n'est pas exécuté.
  3. la condition du "else if" est remplie (5 est bien supérieur à 4) ;
  4. l'ensemble d'instructions du "else if" est exécuté ;
  5. l'ensemble d'instructions du "else" n'est pas exécuté.

L'association des noms réservés "else if" peut être utilisée autant de fois que nécessaire.

Il existe également un opérateur ternaire qui équivaut à la structure "if" avec définition du "else". L'écriture est la suivante :

condition ? instruction1 : instruction2;

Si la condition est remplie, l'"instruction1" est exécutée. Dans le cas contraire, c'est l'"instruction2" qui est exécutée.

Cette écriture est très utile pour valoriser une variable en fonction d'une condition :

var nombre = 10;
nombre = (nombre >= 10) ? 1 : nombre;

La variable "nombre" est déclarée et valorisée par 10. On modifie ensuite sa valeur grâce à l'opérateur ternaire : "nombre" est-elle supérieure ou égale à 10 ? C'est le cas ; "nombre" est alors égale à 1. Dans le cas contraire, "nombre" aurait été valorisée par sa propre valeur.

La structure conditionnelle switch

Lorsque plusieurs tests d'égalité sont nécessaires, l'instruction "switch" peut être plus adaptée qu'une suite de "else if" dans certains cas. L'écriture est la suivante :

var nombre = 5;
switch (nombre) {
   case 1:
      // Instructions à exécuter ...
      break;
   case "valeur":
      // Instructions à exécuter ...
      break;
   case 5:
      // Instructions à exécuter ...
      break;
   case 6:
      // Instructions à exécuter ...
      break;
   default:
      // Instructions à exécuter si aucun cas ne correspond ...
      break;
}

Dans l'exemple ci-dessus :

  1. la valeur utilisée pour les tests d'égalité est précisée entre parenthèses après le "switch" ;
  2. le premier cas à tester (nom réservé "case") veut que la variable "nombre" soit égale à 1 ;
  3. "nombre" n'est pas égale à 1 : le premier cas échoue ; on passe au cas suivant ;
  4. le deuxième cas veut que la variable "nombre" soit égale à la chaîne de caractères "valeur" ;
  5. "nombre" n'est pas égale à "valeur" : le deuxième cas échoue ; on passe au cas suivant ;
  6. le troisième cas veut que la variable "nombre" soit égale à 5 ;
  7. "nombre" est égale à 5 : les instructions écrites (dont "break") après le signe ":" sont exécutées.

L'instruction "break" joue un rôle important dans le "switch" : elle permet d'arrêter les tests et de passer aux instructions écrites après la structure.

Dans l'exemple précédent, les cas 1, "valeur" et 5 sont testés. Le cas 5 étant validé, le "break" est exécuté : les cas 6 et le cas "default" sont purement et simplement ignorés (ce qui n'aurait pas été le cas avec la présence du "break").

Concernant ce cas "default" (nom réservé ; ne pas faire précédé par le nom réservé "case"), il s'agit du cas utilisé par défaut lorsque tous les tests d'égalité de la structure ont échoués.