Partage
  • Partager sur Facebook
  • Partager sur Twitter

Je ne comprends pas SWITCH

    5 avril 2020 à 17:19:17

    let vipStatus = "";
    let guest = {
        name: "Sarah Kate",
        age: 21,
        ticket: true,
        guestType: "artist"
    };
    
    
    switch (guest.guestType) {
        case "artist":
            vipStatus = "Normal";
        case "star":
            vipStatus = "Important";
            break;
        case "presidential":
            vipStatus = "Mega-important";
            break;
        default:
            vipStatus = "None";
    }
    
    console.log(vipStatus)
    Pourquoi, dans ce cas là, la console affiche "Important" ? Cela ne devrait-il pas être "Normal" ou "None" au pire, vu l'absence de break.
    Mais "Important" ? Je ne comprends pas.
    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2020 à 17:44:24

      ta juste oublier de faire un break;

      switch (guest.guestType) {
              case "artist":
                  vipStatus = "Normal";
                  break;
              case "star":
                  vipStatus = "Important";
                  break;
              case "presidential":
                  vipStatus = "Mega-important";
                  break;
              default:
                  vipStatus = "None";
          }



      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2020 à 18:02:54

        Je sais bien ça. Ma question est de savoir pourquoi il prend la valeur du cas suivant alors que la condition n'est pas remplie ?
        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2020 à 19:05:19

          break permet de sortir du switch et de ne pas continuer.

          donc dans ton cas le programme continue jusque a le premier break , et donc la variable s'attribue la valeur "Important"

          -
          Edité par HtprograsHts 5 avril 2020 à 19:06:12

          • Partager sur Facebook
          • Partager sur Twitter
            5 avril 2020 à 19:07:24

            Bonjour, pour quelle raison dis-tu que la condition n'est pas remplie?

            Parce que pour toi artist != start? c'est exact mais ce n'est pas comme cela que fonctionne le swith.

            L10 tu rentre dans le swith en vérifiant la valeur de la variable   guest.guestType

            L11 La condition est remplie il rentre dans le case

            L12 tu assigne une valeur à la variable vipStatus  qui a en mémoire la valeur Normal

            L13 Pas de break rencontrer il rentre dans le case

            L14 Tu assigne une nouvelle valeur à la variable  vipStatus que ce passe t'il à ce niveau? cette variable prend la nouvelle valeur qui est Important  

            L15 rencontre un break => sortie du swith.

            Est-ce plus clair?

            -
            Edité par AbcAbc6 5 avril 2020 à 19:09:25

            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2020 à 19:27:08

              Je vois comment ça fonctionne, mais je comprends toujours pas pourquoi cela est fait comme ça. Pourquoi il entre une deuxième fois dans le case si "artist" n'est pas, en effet, égale à "star?

              C'est pas l'intérêt d'un "case" de vérifier une condition ?

              Je pensais que le "break" servait simplement à ne pas vérifier les autres conditions, une fois qu'on a trouvé celle qui correspond.

              Enfin bon, j'ai compris...

              C'est juste mal foutu, mis à part pour tester plusieurs cas ensemble pour le coup.

              -
              Edité par Dylan J. Gerrits 5 avril 2020 à 19:35:09

              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2020 à 19:46:51

                C'est pas l'intérêt d'un "case" de vérifier une condition ?

                L'évaluation de l'expression ne ce fait qu'une seul fois. Je pense que cette lecture t’éclairera 

                C'est juste mal foutu, mis à part pour tester plusieurs cas ensemble pour le coup.

                Non car en indiquant plusieurs case successif tu peux regrouper une ou des instructions pour plusieurs cas.

                regarde le code de cette documentation. L6 et L7 deux cas différent pour une même instruction. 

                -
                Edité par AbcAbc6 5 avril 2020 à 19:47:53

                • Partager sur Facebook
                • Partager sur Twitter
                  5 avril 2020 à 20:54:12

                  Yo.

                  Petit aparté:

                  C'était juste pour dire qu'une fois que tu auras compris, tu vas te demander pourquoi avoir la fonction switch alors qu'il y a déjà la fonction if ,else if/else.

                  La différence entre le if et le switch est que: switch est plus rapide que le if. La différence n'est absolument pas visible si tu as seulement 4 éléments (case), or, si tu as par exemple 1000 éléments (pour ce cas, je parle de 1000 cases pour le switch // ou 998 else if pour un if) la différence sera flagrante ! Switch sera plus rapide ! La différence peut-être de plus de 20 secondes. Donc plus il y a d'éléments, plus la différence de temps augmente, et donc switch sera plus rapide.

                  -
                  Edité par CentreDordi 5 avril 2020 à 20:55:58

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

                  Je ne comprends pas SWITCH

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown