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 :

Explication sur la syntaxe JavaScript


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut Explication sur la syntaxe JavaScript
    Bonjour,

    j'ai besoin de comprendre 2 lignes de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fillColor = fillColor || 0;
    green = fillColor >> 8 & 0xFF;
    merci

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    fillColor = fillColor || 0; est un idiome qui permet d'attribuer une valeur par défaut à une variable quand celle-ci n'est pas définie. La partie à gauche du signe || (ici fillColor lui-même) est affectée à la variable fillColor si celle-ci est évaluée à true (donc tout ce qui n'est pas 0, -0, null, false, NaN, undefined ou une chaîne vide). Dans le cas contraire la valeur à droite de || est affectée à la variable.

    La deuxième ligne sert à extraire la valeur de la composante verte d'une couleur. Elle nécessite de connaître un peu les opérations sur les bits.

    Une couleur RVB est représentée par 3 octets (1 pour chaque composante) par exemple D0BB62 en hexadécimal (R=D0, V=BB, B=62).
    Ce qui donne en binaire: 1101 0000 1011 1011 0110 0010. (8 bits par composante)

    >> est un opérateur de décalage de bit vers la droite, donc >> 8 décale de 8 bits vers la droite (les bits de droite sont alors propulsés dans le néant), on obtient:
    1101 0000 1011 1011. Ainsi on se débarrasse de la composante bleu.

    L'opérateur & est un ET logique sur les bits. FF en hexadécimal correspond à 1111 1111 en binaire. On pose donc l'opération:
    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        1101 0000 1011 1011
     &  0000 0000 1111 1111          // j'ai comblé avec des 0 pour faire plus joli
    -----------------------------
        0000 0000 1011 1011

    et voilà, terminée la composante rouge, il ne reste plus que le vert: 1011 1011 soit BB en hexadécimal.

    (À noter que la précédence des opérateurs fait que le calcul est effectué comme ça: (fillColor >> 8) & 0xFF et non comme ça fillColor >> (8 & 0xFF))
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Besoin d'explication sur une question de syntaxe
    Par Cynthia. dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/10/2010, 17h22
  2. Réponses: 9
    Dernier message: 29/07/2010, 16h15
  3. explication sur les syntaxes
    Par tortue_22 dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2009, 14h09
  4. Explication sur du code javascript
    Par griese dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/07/2006, 09h40
  5. Explications sur la syntaxe iptables
    Par Nightfall dans le forum Sécurité
    Réponses: 4
    Dernier message: 11/05/2005, 01h33

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