IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Utiliser & à la place de &&


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut Utiliser & à la place de &&
    Bonjour,

    Une petite question existentielle... Voyez-vous un inconvénient à remplacer && par &? Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a=1;
    b=2;
    c=3;
    if ((c>b)&&(b>a)) alert("Bon!");
    if ((c>b)&(b>a)) alert("Bon aussi!");
    Merci par avance pour vos réponses!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Hello,

    Le truc c'est que & c'est censé être l'opérateur ET binaire. Ça va donc surprendre le programmeur qui tombe là-dessus dans le code.

    Cela dit, c'est vrai qu'en matière de conversion, true se convertit à 1 et vice-versa, et false à zéro et vice-versa. Du coup, en principe, le résultat obtenu sera le même.

    Mais il y a aussi le fait que && utilise un court-circuit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(condition1() && condition2())
    appellera d'abord condition1(), et si c'est false le if et condition2() ne s'exécutent pas. Si c'est true alors condition2() s'exécute, et son résultat n'est converti en booléen que pour les besoins de if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var v = true && "chat";
    v sera égal à "chat", qui n'est pas converti en booléen ni en quoi que ce soit.

    Alors qu'en utilisant a() & b(), a() et b() sont exécutés tous les deux, pas de court-circuit. Et ils sont tous les deux convertis en nombres, et le résultat obtenu est le ET binaire appliqué sur ces nombres.

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 679
    Points
    44 679
    Par défaut
    Bonjour,
    pas grand chose de plus à dire sur ce qui vient d'être écrit il est évident qu'il faut se cantonner à :
    • utiliser && pour une opération logique ;
    • utiliser & pour une opération binaire.

    et du coup tout le monde s'y retrouve et n'aura pas à chasser le bug le jour où on remplace les expressions par d'autres non booléennes.

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut Utiliser & à la place de &&
    Bonjour,

    Pour les inconvénients, je retiens ceci :
    - Ca va surprendre le programmeur.
    - L'opération logique est plus efficace avec &&.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quoi utiliser à la place de search lucene
    Par Garra dans le forum Zend Framework
    Réponses: 3
    Dernier message: 07/11/2012, 22h54
  2. Qu'utiliser à la place de la fonction eregi ?
    Par Alexandrebox dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 06/04/2012, 12h18
  3. Quoi utiliser à la place d'une MsFlexGrid
    Par Pascal Lob dans le forum VB.NET
    Réponses: 9
    Dernier message: 16/11/2011, 13h44
  4. Réponses: 2
    Dernier message: 22/01/2009, 14h13
  5. Que peut on utiliser à la place des popup
    Par david42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/02/2006, 08h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo