L'instruction switch permet de faire exécuter certaines instructions selon la valeur prise par une variable. Elle prend la forme suivante :
switch (variable) {
case val1 : instructions
case val2 : instructions
case val3 : instructions
......
default : instructions
}
Dès que la variable testée prend l'une des valeurs proposées, les instructions correspondant à cette valeur et aux valeurs suivantes sont exécutées. Si aucune valeur n'est reconnue, ce sont les instructions correspondant à default qui sont exécutées.
La variable testée doit être écrite entre parenthèses. L'ensemble des instructions correspondant aux différentes valeurs possibles doit être écrit entre des accolades.
Pour que seules les instructions correspondant à une valeur soient exécutées, on utilise le mot-clé BREAK qui permet de sortir directement de la structure switch.
Nous allons créer un document HTML qui affiche une citation tirée au hasard à chaque fois qu'il est ouvert. Il nous faut pour cela écrire une fonction maCitation() qui tire au hasard un nombre inférieur au nombre total de citations disponibles puis affiche la citation correspondant à ce nombre.
JavaScript fournit la fonction Math.random() qui renvoie un nombre au hasard entre 0 et 1. Pour obtenir un nombre entre 0 et une valeur maximale nMax, il suffit de multiplier le résultat par nMax. Pour obtenir enfin un nombre entier, on utilisera la fonction Math.floor qui renvoie la partie entière d'un nombre à virgule.
Tout ceci nous permet d'écrire la fonction hasard(nMax) qui fournit un nombre entier pris entre 0 et nMax, nMax étant exclu.
Enregistrons cette fonction dans le fichier citations.js.
Un numéro de citation étant tiré au hasard, nous choisirons la citation appropriée en utilisant l'instruction switch. La variable maxCitations contiendra le nombre de citations disponibles. Cela nous donne la fonction maCitation :
On ajoute la variable maxCitations et la fonction maCitation() au fichier citations.js.
Le fichier html se contente de charger le fichier citations.js, puis de faire appel à la fonction maCitation().