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 :

[Syntaxe] Déclaration de variable, petite question


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut [Syntaxe] Déclaration de variable, petite question
    Bonjour,

    Dans des fichiers de la doc Yahoo YUI!, je suis tombé sur cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ua = YAHOO.env.ua , oAnim;
    Un peu plus loin dans le fragment de code, ua et oAnim sont utilisés comme si ils avaient une valeur spécifique, or je ne vois qu'une seule attribution.

    Alors qu'est ce qui m'échappe dans cette syntaxe selon vous ?


  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    je pense qu'un bout de code t'a échappé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var ua = 6 , oAnim;
    alert(oAnim)
    oAnim n'est pas défini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var ua = 6 , oAnim=8;
    alert(oAnim)
    oAmin est defini

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonsoir,
    on trouve quand même dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    oAnim = new YAHOO.util.Anim(oUL, 
                { marginTop: { to: 0 } },
                .5, YAHOO.util.Easing.easeOut);
    c'est bien une initialisation, et pour son utilisation il y a un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (oAnim && oAnim.isAnimated()) {
                oAnim.stop();
                oAnim = null;
            }
    cela reste somme toute assez courant

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Je vous met tout, ce sera plus simple pour comprendre (c'est extrait de la doc pour le composant menu)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
                var ua = YAHOO.env.ua , oAnim;
                var onSubmenuBeforeShow = function (p_sType, p_sArgs) {
                    var oBody , oElement , oShadow , oUL;
                    if (this.parent) {
                        oElement = this.element;
                        oShadow = oElement.lastChild;
                        oShadow.style.height = "0px";
                        if (oAnim && oAnim.isAnimated()) {
                            oAnim.stop();
                            oAnim = null;
                        }
                        oBody = this.body;
                        if (this.parent &&
                            !(this.parent instanceof YAHOO.widget.MenuBarItem)) {
                            if (ua.gecko || ua.opera) {
                                oBody.style.width = oBody.clientWidth + "px";
                            }
                            if (ua.ie == 7) {
                                oElement.style.width = oElement.clientWidth + "px";
                            }
                        }
                        oBody.style.overflow = "hidden";
                        oUL = oBody.getElementsByTagName("ul")[0];
                        oUL.style.marginTop = ("-" + oUL.offsetHeight + "px");
                    }
                }
                var onTween = function(p_sType, p_aArgs, p_oShadow) {
                    if (this.cfg.getProperty("iframe")) {
                        this.syncIframe();
                    }
                    if (p_oShadow) {
                        p_oShadow.style.height = this.element.offsetHeight + "px";
                    }
                }
                var onAnimationComplete = function(p_sType, p_aArgs, p_oShadow) {
                    var oBody = this.body,
                        oUL = oBody.getElementsByTagName("ul")[0];
                    if (p_oShadow) {
                        p_oShadow.style.height = this.element.offsetHeight + "px";
                    }
                    oUL.style.marginTop = "";
                    oBody.style.overflow = "";
                    if (this.parent &&
                        !(this.parent instanceof YAHOO.widget.MenuBarItem)) {
                        if (ua.gecko || ua.opera) {
                            oBody.style.width = "";
                        }
                        if (ua.ie == 7) {
                            this.element.style.width = "";
                        }
                    }
                }
                var onSubmenuShow = function(p_sType, p_sArgs) {
                    var oElement , oShadow , oUL;
                    if (this.parent) {
                        oElement = this.element;
                        oShadow = oElement.lastChild;
                        oUL = this.body.getElementsByTagName("ul")[0];
                        oAnim = new YAHOO.util.Anim(oUL,
                            { marginTop: { to: 0 } },
                            .5, YAHOO.util.Easing.easeOut);
                        oAnim.onStart.subscribe(function () {
                            oShadow.style.height = "100%";
                        });
                        oAnim.animate();
                        if (YAHOO.env.ua.ie) {
                            oShadow.style.height = oElement.offsetHeight + "px";
                            oAnim.onTween.subscribe(onTween, oShadow, this);
                        }
                        oAnim.onComplete.subscribe(onAnimationComplete, oShadow, this);
                    }
                }
                var oMenuBar = new YAHOO.widget.MenuBar("productsandservices", {
                                                        autosubmenudisplay: true,
                                                        hidedelay: 750,
                                                        lazyload: true });
                oMenuBar.subscribe("beforeShow", onSubmenuBeforeShow);
                oMenuBar.subscribe("show", onSubmenuShow);
                oMenuBar.render();
    En effet, je vois bien que oAnim est déclaré apparemment de façon globale dans la méthode onSubmenuShow, cependant, elle est utilisée (ou déclarée) dans la méthode onSubmenuBeforeShow.

    Veux-tu dire qu'elle est déclarée pour "annoncer" sa portée dans onSubmenuBeforeShow, puis attribuée dans onSubmenuShow ? C'est ce qui me parait le plus logique du coup (néanmoins tordu, mais logique ^^).

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    pas regardé plus avant, mais si il y a demande d'affichage d'un menu, on vérifie qu'il n'y en a pas en cours, OR la 1st fois il n'y en aura pas d'où le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (oAnim && oAnim.isAnimated()) {
      oAnim.stop();
      oAnim = null;
    }
    qui test si il en a en cours et qui le stoppe dans ce cas.

Discussions similaires

  1. Syntaxe - Déclaration de Variables
    Par Aquellito dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/04/2012, 10h24
  2. Petite question de syntaxe
    Par ryan dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/01/2008, 19h00
  3. Réponses: 2
    Dernier message: 07/05/2007, 16h46
  4. Petite question de syntaxe
    Par gmonta31 dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2006, 11h08
  5. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 16h57

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