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 :

Mécanisme de base variable portée locale / globale


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de mapmip
    Profil pro
    ulla
    Inscrit en
    Juillet 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ulla

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 326
    Points : 345
    Points
    345
    Par défaut Mécanisme de base variable portée locale / globale
    bonjour,

    je souhaite savoir quelles sont les conséquences d'un nommage de variables de même noms;
    je déclare une variable globale i et dans une boucle for next je declare i aussi comme variable :

    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
     
     
     
     
     
    (function($) {
     
     
    var i = 50;
    for(var i =0;i<8;i++){
     
    }
    alert("i = " +i);
     
     
    })(jQuery);
    mon alert renvoie 8, est-ce normale ? Je m'attendais à ce qu'il me renvoie 50...

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu pourrais me dire dans quel langage de programmation il est possible de déclarer deux variables avec le même nom sans que la seconde déclaration écrase la première ?

  3. #3
    Membre averti Avatar de mapmip
    Profil pro
    ulla
    Inscrit en
    Juillet 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ulla

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 326
    Points : 345
    Points
    345
    Par défaut
    c'est du javascript pur !
    je crois me rappeler avec les systemes de closure que...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai pas dit que c'était pas du JavaScript "dur", je dis juste que JavaScript, comme tout langage de programmation, ne sait pas gérer plusieurs variables ayant le même nom dans la même portée, ce qui semble assez logique. Donc si tu déclares deux fois la même variable, la seconde écrase la première.
    Et pour rappel (enfin... ce sera plutôt une info à priori...), seule une fonction crée une nouvelle portée en JavaScript.

  5. #5
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    @Bovino, JavaScript ?
    (je taquine)

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function maFonction() {
      var i = 1;
      alert(i);
    }
     
    var i = 0;
     
    alert(i); // 0
     
    maFonction(); // 1

    @mapmip. En (très) gros, la portée des variables, en JavaScript, se fait selon les niveaux des fonctions. Ce n'est pas par "bloc" tel que tu l'entends. Chaque fonction interne a accès au scope de sa fonction externe. C'est le scope lexical/statique (voir un post pour mieux comprendre)

    c'est du javascript pur !
    C'est du bon j'espère ?!?
    Dans le jargon, JavaScript (tu noteras la position des majuscules) pur = vanilla JavaScript

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino
    je dis juste que JavaScript, comme tout langage de programmation, ne sait pas gérer plusieurs variables ayant le même nom dans la même portée, ce qui semble assez logique.
    ...
    Et pour rappel (enfin... ce sera plutôt une info à priori...), seule une fonction crée une nouvelle portée en JavaScript.

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

Discussions similaires

  1. Gérer des variables locales/globales
    Par Sweeny94 dans le forum Simulink
    Réponses: 20
    Dernier message: 07/11/2013, 11h34
  2. Bash et les variables locales/globales
    Par Yokav dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 31/05/2012, 18h10
  3. Variables locale/globale
    Par pydev dans le forum Général Python
    Réponses: 12
    Dernier message: 16/04/2009, 22h19
  4. Variable static locale globale include
    Par moueza dans le forum Débuter
    Réponses: 2
    Dernier message: 11/06/2008, 23h21
  5. Synchronisation de base de données locale/distante Internet
    Par StefC30 dans le forum Développement
    Réponses: 3
    Dernier message: 25/07/2003, 14h47

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