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 :

Interférence dans les var. de boucle


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut Interférence dans les var. de boucle
    Bonjour,

    C'est la première fois que je me rends compte de ce pb, je débute en fait.

    Voici un bout de code pour illustrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function b() {
      for(i=0; i<10; i++) {
        - traitements -
      }
    }
     
    function a() {
      for(i=0; i<5; i++) {
        b();
      }
    }
    Le problème c'est que le résultat que j'attends ne vient pas étant donné qu'il semble y avoir une interférence au niveau de la variable i.
    Alors est-ce que je me suis trompée quelque part, ou bien est-ce le comportement normal en javascript ?

    Et si c'est tout à fait normal comment vous-y prenez-vous pour faire en sorte de ne pas rencontrer ce type d'erreur dans des scripts qui contiennent plétor de fonctions qui font toutes appellent les unes au autres ?
    Et me dites pas je me serts de tout l'alphabet... vous avez bien une règle de nommage pratique... nan ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    En l'absence de déclaration une variable est considérée comme globale, c'est à dire accessible par toutes les fonctions.
    Dans ton cas déclare i comme étant une variable locale (visible par une fonction)
    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
     
    function b() 
    {  
      var i;
      for(i=0; i<10; i++) 
      {  - traitements - 
      } 
    }   
     
    function a() 
    {  
      var i;
       for(i=0; i<5; i++) 
       {  
             b(); 
       } 
    }
    Personnellement, je te conseille de toujours déclarer et initialiser tes variables pour éviter les erreurs de ce genre.

  3. #3
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonjour,

    aaahhh c'est donc çà, merci beaucoup pour ton aide
    bizarrement j'ai déclaré toutes mes variables sauf celles de boucle...

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

Discussions similaires

  1. Interférences dans les variables de session
    Par ziss dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 22/03/2013, 09h19
  2. Se deplacer dans les axes à l'aide d'une boucle
    Par amalirou dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 15/11/2007, 07h54
  3. Les Break dans les boucles
    Par pc152 dans le forum Général Dotnet
    Réponses: 12
    Dernier message: 16/03/2007, 10h44
  4. Réponses: 3
    Dernier message: 20/09/2006, 22h35
  5. [Optimisation?] Déclaration de variable dans les boucles
    Par romaintaz dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2006, 16h08

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