La condition « switch »

Parent Previous Next



La condition « switch »

Nous venons d'étudier le fonctionnement de la condition if else qui est très utile dans de nombreux cas, toutefois elle n'est pas très pratique pour faire du cas par cas ; c'est là qu'intervient switch !

Prenons un exemple : nous avons un meuble avec quatre tiroirs contenant chacun des objets différents, et il faut que l'utilisateur puisse connaître le contenu du tiroir dont il entre le chiffre. Si nous voulions le faire avec if else ce serait assez long et fastidieux :

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

var drawer = parseInt(prompt('Choisissez le tiroir à ouvrir (1 à 4) :'));

   

if (drawer == 1) {

   

   alert('Contient divers outils pour dessiner : du papier, des crayons, etc.');

   

} else if (drawer == 2) {

     

   alert('Contient du matériel informatique : des câbles, des composants, etc.');

     

} else if (drawer == 3) {

     

   alert('Ah ? Ce tiroir est fermé à clé ! Dommage !');


} else if (drawer == 4) {


   alert('Contient des vêtements : des chemises, des pantalons, etc.');


} else {

     

   alert("Info du jour : le meuble ne contient que 4 tiroirs et, jusqu'à preuve du contraire, les tiroirs négatifs n'existent pas.");


}


C'est long, non ? Et en plus ce n'est pas très adapté à ce que l'on souhaite faire. Le plus gros problème est de devoir réécrire à chaque fois la condition ; mais avec switch c'est un peu plus facile :

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

var drawer = parseInt(prompt('Choisissez le tiroir à ouvrir (1 à 4) :'));


switch (drawer) {

   case 1:

       alert('Contient divers outils pour dessiner : du papier, des crayons, etc.');

   break;


   case 2:

       alert('Contient du matériel informatique : des câbles, des composants, etc.');

   break;


   case 3:

       alert('Ah ? Ce tiroir est fermé à clé ! Dommage !');

   break;


   case 4:

       alert('Contient des vêtements : des chemises, des pantalons, etc.');

   break;


   default:

       alert("Info du jour : le meuble ne contient que 4 tiroirs et, jusqu'à preuve du contraire, les tiroirs négatifs n'existent pas.");

}



Comme vous pouvez le constater, le code n'est pas spécialement plus court mais il est déjà mieux organisé et donc plus compréhensible. Détaillons maintenant son fonctionnement :


Dans l'ensemble, vous n'aurez pas de mal à comprendre le fonctionnement du switch, en revanche l'instruction break vous posera peut-être problème, je vous invite donc à essayer le code sans cette instruction.

Vous commencez à comprendre le problème ? Sans l'instruction break vous exécutez tout le code contenu dans le switch à partir du case que vous avez choisi. Ainsi, si vous choisissez le tiroir n°2 c'est comme si vous exécutiez ce code :

Code : JavaScript 

1

2

3

4

alert('Contient du matériel informatique : des câbles, des composants, etc.');

alert('Ah ? Ce tiroir est fermé à clé ! Dommage !');

alert('Contient des vêtements : des chemises, des pantalons, etc.');

alert("Info du jour : le meuble ne contient que 4 tiroirs et, jusqu'à preuve du contraire, les tiroirs négatifs n'existent pas.");


Dans certains cas, ce système peut être pratique mais cela reste extrêmement rare.

Avant de clore cette partie, il est nécessaire de vous faire comprendre un point essentiel : un switch permet de faire une action en fonction d'une valeur mais aussi en fonction du type de la valeur (comme l'opérateur ===), ce qui veut dire que ce code n'affichera jamais « Bravo ! » :

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

var drawer = prompt('Entrez la valeur 1 :');

         

switch (drawer) {

   case 1:

       alert('Bravo !');

   break;

           

   default:

       alert('Perdu !');

}



En effet, nous avons retiré la fonction parseInt() de notre code, ce qui veut dire que nous passons une chaîne de caractères à notre switch. Puisque ce dernier vérifie aussi les types des valeurs, le message « Bravo ! » ne sera jamais affiché.

En revanche, si nous modifions notre premier case pour vérifier une chaîne de caractères plutôt qu'un nombre alors nous n'avons aucun problème :

Code : JavaScript 

1

2

3

4

5

6

7

8

9

10

var drawer = prompt('Entrez la valeur 1 :');

         

switch (drawer) {

   case '1':

       alert('Bravo !');

   break;

       

   default:

       alert('Perdu !');

}



Créé avec HelpNDoc Personal Edition: Produire des livres EPub gratuitement

Site à deux balles