Premiers pas en JavaScript
SWITCH avec expressions
cuy copyleft
  See You Why?  

 


condition SWITCH (18.1) | | exercices - switch (18.8)

Contenu

 

 

I. L'instruction SWITCH

voir section précédente <<

 

Exemple

<html>
<body>

<h1>variable comme condition</h1>

<script type="text/javascript">

   var dateobj=new Date();
   var today=dateobj.getDay();
   switch(today){
      case 1:
         window.location="lundi.htm";
         break;
      case 2:
         window.location="mardi.htm";
         break;
      case 3:
         window.location="mercredi.htm";
         break;
      case 4:
         window.location="jeudi.htm";
         break;
      case 5:
         window.location="vendredi.htm";
         break;
      case 6:
         window.location="samedi.htm";
         break;
      case 0:
         window.location="dimanche.htm";
         break;
}


</script>


</body>
</html>

 

 

II. Switch avec expressions

Dans les deux exemples donnés dans la section précédente, le SWITCH était suivi par le nom d'une variable notée entre parenthèses.
Chaque cas (noté CASE) envisagé était l'égalité avec une valeur constante.

Cette valeur constante était notée
entre guillemets s'il s'agissait d'une variable alphanumérique,
sans guillemets s'il s'agissait d'une variable numérique.

   switch (ma_variable) {
     case "ananas" :
          document.writeln("de Costa Rica à 1,79 €/pièce.");
          break;

ou

   switch(today){
      case 1:
         window.location="lundi.htm";
         break;

Dans les deux exemples ci-dessus,
ma_variable est une variable string qui peut éventuellement prendre la valeur "ananas";
today est une variable numérique qui pourrait prendre la valeur 1;
derrière le mot-clé case, on indique différentes valeurs que pourrait prendre la variable située derrière le mot-clé switch.

En bref, pour utiliser correctement un switch, on doit comparer la variable située derrière le switch avec chacune des valeurs mentionnées dans les cas (case), comparaison qui ne peut être qu'une égalité...

Cependant, bien que la majorité des tutoriels trouvés sur le Net l'ignorent, mais la norme d'ECMAScript le permet, le CASE peut être suivi d'une expression autre qu'une valeur constante. On pourrait dès lors trouver des exemples (rares, il est vrai) d'instructions SWITCH faisant appel à des cas (de valeurs calculées) aussi divers que :

        case 60*60*24:
        case Math.PI:
        case n+1:
        case a[2]:

mais pas de valeurs booléennes telles que  :

        case (age<18):
        case (cc>=dd):

même si d'autres langages de programmation le permettent.

Cependant, si le mot clé case ne peut être suivie d'une expression booléenne reprenant la variable nommée derrière le mot-clé switch, nous allons proposer ici deux astuces permettant ce genre de comparaison... à employer avec modération, car l'instruction switch et ses case n'ont pas été conçus pour cela.

A. case suivi d'une comparaison

1.- faire suivre le mot-clé switch de la valeur true entre parenthèses,
    puis ouvrir les accolades;
2.- noter un premier case suivi d'une expression booléenne entre parenthèses
   (un expression logique, donc une comparaison qui peut être vraie ou fausse);
3.- terminer ce case par un deux-points;
4.- établir la liste des instructions à appliquer au cas où la condition est vérifiée
   (ne pas oublier le point-virgule après chaque instruction);
5.- terminer le cas (case) par une instruction break qui empêchera de consulter les cas suivants si un cas a été vérifié;
6.- pour un deuxième case (ou suivant), recommencer à la ligne 2;
7.- après le dernier case, refermer les accolades.

On pourrait ainsi avoir :

switch (true)
    case
(age < 18):
        document.write("vous êtes encore mineur");
        break;
    case (age < 68):
        document.write("vous avez l'age de pouvoir travailler");
        break;
    case (age >= 68):
        document.write("vous avez l'age de la pension");
}
 

À déconseiller et pourtant pas si idiot que ça...
une valeur true, notée après le switch... ce n'est cependant pas une variable :-( ;
derrière chaque case, une expression logique comparée à la valeur notée après le switch ;
un break qui empêche de trouver une autre valeur moins stricte mais vraie.

C'est la procédure adoptée dans l'exercice 26e... mais d'ici là, vous l'aurez oubliée.

 

les IF et ELSE IF sont préférables

Bien sûr, dans le respect de la logique JS, on peut toujours faire des tests consécutifs en veillant à commencer par les cas extrêmes : un IF au départ, un ou plusieurs ELSE IF par la suite et un dernier ELSE devrait convenir.

Notre script deviendrait alors:

if (age < 18) {
    document.write("vous êtes encore mineur");
} else if (age < 68) {
    document.write("vous avez l'âge de pouvoir travailler");
} else {
    document.write("vous avez l'âge de la pension");
}
 

 

VIII. Exercices relatifs au SWITCH...

voir suite >>>

 

 

IX. Test relatif au SWITCH...

voir suite >>>

 

 


condition SWITCH (18.1) | | exercices - switch (18.8)

 

 

Merci de votre visite à partir de :

Vous êtes sur :
https://cuy.be/cours/jvs/jvs_182_switch_expressions.html

partager sur FaceBook...           consulter sur FaceBook...

 

copyleft
Des liens ne fonctionnent plus ?
Avez-vous des suggestions ?
des commentaires, des corrections, un encouragement... ?
Pour info : Non, il n'y a pas de version papier ou DOC, PDF, etc. de ces notes.


Envoyez-moi un E-Mail (cuy(point)w(at)skynet(point)be)

Attention (at) signifie @ et (point) signifie .

Accueil CUY = See you why?

Compteur gratuitEasyCounter     BelStat Monitored by BelStat - Your Site Counts
La 1 000 000e page a été visitée le 21 mai 2010.
La 2 000 000e page a été visitée ce 18 mars 2012, vers midi.
La 3 000 000e page a été visitée ce 7 janvier 2014 entre 18 h et 18 h 45,
La 4 000 000e page a été visitée ce 5 juin 2015 entre 15 h 49 et 15 h 52,
La 5 000 000e page a été visitée ce 29 aout 2017 après 23 h 30,
Et la 6 000 000e page visitée, trop tôt pour y penser ?
 
et, d'après BelStat, CUY est visité surtout en semaine, peu le weekend...
moins et irrégulièrement pendant les vacances :

visites sur 3 mois, de la mi octobre 2013 à la mi janvier 2014.
 
La 3 333 333e page visitée a eu lieu ce mardi 10 juin 2014, en début d'après midi...
La 3 666 666e page visitée a eu lieu ce dimanche 28 decembre 2014, vers 16 h...
Un tiers de million de pages visitées en 154 jours cela fait une moyenne de 2165 pages visitées par jour...
Deux tiers de million de pages visitées en 355 jours soit une moyenne de 1878 pages visitées par jour...
et seulement 1195 pages visitées quotidiennement pendant les vacances estivales
de la mi juin à la mi septembre 2014

Vous voulez lire quelques messages reçus ?
quelques encouragements ?
Cliquez ici


Fin septembre 2009, installation de ce compteur
qui ne compte chaque nouvel ordinateur visiteur qu'une seule fois
free counter
 
m-à-j du 22/11/2021 :

Depuis cette fin septembre 2009, parmi les 210 pays (sur 274 drapeaux connus) qui nous ont visité,
voici les 100 pays qui nous visitent le plus, 
Nos petits visiteurs, classés par date de visite, où un seul ordi nous a visité, sont :
199. Turkmenistan (TM May 10, 2017) ; 200. Lesotho (LS March 1, 2017) ;
201. Turks and Caicos Island (TC January 18, 2016
202. Cook Islands (CK September 19, 2015)  203. Faroe Islands (FO January 27, 2015
204. Virgin Islands American (VI November 12, 2014) ;
205. Belize (BZ September 29, 2014) ;206. Eswatini - Swaziland (SZ July 21, 2014) ;
207. Grenada (GD April 3, 2014) ; 208. Timor-Leste (TI March 29, 2014) ;
209. American Samoa (AS December 26, 2012) ; 210. Guyana (GY November 5, 2010).