Partage
  • Partager sur Facebook
  • Partager sur Twitter

opérateurs logiques javascript

Sujet résolu
Anonyme
    10 mars 2010 à 15:52:31

    bonjour, je voudrais savoir s'il existe un opérateur javascript du genre du XOR... mais pas pour comparer deux valeurs, pour comparer deux tests.

    du genre: je veux tester deux valeurs. Elles doivent etre soit toutes les deux vides, soit toutes les deux pleines. S'il n'y en a qu'une des deux c'est pas bon.

    donc j'ai fait
    erreur = false;
    
    if(val1 != '' || val2 != ''){
      if(val1 == '' || val2 == ''){
        erreur = true;
      }
    }
    


    mais ça me parait "cracra" donc je voudrais savoir s'il existe un truc du genre
    if(val1 != '' XOR val2 !='') erreur = true;
    


    ou juste plus correct que le truc un peu barbare que j'ai pondu...

    merci

    edit:
    question con: je savais pas qu'on pouvait faire
    if(val1 != '' ^ val2 != '') erreur = true;
    


    tout simplement. Bon, ça c'est fait. dsl d'avoir posté pour ça. Si un modo passe par là....
    • Partager sur Facebook
    • Partager sur Twitter
      10 mars 2010 à 16:04:59

      il y a l'opérateur binaire xor: ^
      dans ton cas tu peux l'utiliser comme ça: if((val1 != '') ^ (val2 !=''))

      vu que tu utilises 2 booléens c'est comme si tu utilisais l'opération sur 2 nombres d'un seul bit.
      A noter cependant que le retoure est 0 ou 1 au lieu de true ou false, ça n'a pas d'incidence dans ton cas (car le 0 ou le 1 sont convertit automatiquement en false/true) mais ça peut avoir de l'importance si on désire stocker le résultat pour l'utiliser ultérieurement.



      Et sinon au lieu de faire 2 if imbriqué l'un dans l'autre tu peux utiliser l'opérateur ET (&&): if((val1 != '' || val2 != '')&&(val1 == '' || val2 == '')){erreur = true;}
      • Partager sur Facebook
      • Partager sur Twitter
        10 mars 2010 à 16:07:37

        Citation : restimel

        A noter cependant que le retoure est 0 ou 1 au lieu de true ou false, ça n'a pas d'incidence dans ton cas (car le 0 ou le 1 sont convertit automatiquement en false/true) mais ça peut avoir de l'importance si on désire stocker le résultat pour l'utiliser ultérieurement.



        J'avais jamais tilter ça ^^ Bien vu :p

        • Partager sur Facebook
        • Partager sur Twitter
          10 mars 2010 à 16:57:03

          ben comme c'est une opération binaire ça retourne un nombre

          D'ailleurs à cause de ça, c'est moins performant. Je viens de faire un test et c'est à peu près 4 fois plus lent que de faire if((val1 != '' || val2 != '')&&(val1 == '' || val2 == ''))
          • Partager sur Facebook
          • Partager sur Twitter
            10 mars 2010 à 17:08:25

            Pourquoi "à cause de ça" ?

            Du fait de devoir convertir les booléens en nombres 32 bits avant de calculer, puis reconvertir le résultat en booléen ? ^^
            • Partager sur Facebook
            • Partager sur Twitter
              10 mars 2010 à 17:12:07

              je suppose... (les conversions ont un coût)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme

              opérateurs logiques javascript

              × 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