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 :

Variable globale et fonctions


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 44
    Points
    44
    Par défaut Variable globale et fonctions
    Bonjour,

    Dans ma page JSP, j'ai déclaré une variable globale de type Date initialisée:
    var maDate = new Date();

    La variable a donc la date du jour.

    Ensuite, j'ai créé une fonction appelée par un bouton qui attribue à cette variable une date arbitraire, par exemple le 1er juillet 2007.

    En affichant avec alert() la valeur de la variable maDate à la fin de la fonction, je peux constater que la variable vaut désormais "2008-07-01"

    Ensuite, j'ai créé une autre fonction appelée par un autre bouton qui va utiliser la variable maDate pour chercher dans une base de données les objets correspondant au 1er juillet 2008 mais bizarrement, lorsque je clique sur ce deuxième bouton, la variable maDate qui valait "2008-07-01" après la première fonction est revenue à sa valeur par défaut (date du jour)

    Comment se fait il que la valeur affectée à maDate dans la première fonction soit ensuite remplacée par la valeur par défaut ?

    Merci de votre aide et bonne année 2009 !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 44
    Points
    44
    Par défaut
    Pour illustrer mon propos:

    Citation Envoyé par Auteur Voir le message
    Code javascript : 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
     
    var maVar = "test";
     
    function testVar1()
    {
     var maVar = "ceci est un autre test";
     alert(maVar); //affiche "ceci est un autre test";
    }
     
    function testVar2()
    {
     alert(maVar); //affiche "test";
    }
     
    testVar1();
    testVar2();
    Bonsoir,

    Est il possible de modifier ce code pour que la fonction 2 affiche elle aussi "ceci est un autre test" si on a au préalable attribué cette valeur à la variable globale en appelant la fonction testVar1() ?

    En d'autres termes, l'affectation d'une variable globale est elle limitée à la fonction qui procède à cette affectation comme si la variable globale était locale ou bien peut on modifier la valeur de la variable globale de manière à ce que la nouvelle valeur soit disponible pour toutes les autres fonctions ?

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    j'avoue que pour un mec qui vient de se lever c'est un peu surréaliste comme sujet
    mais à vue de nez, si tu omets le mot-clé var dans testVar1, tu définis une nouvelle valeur pour la variable globale maVar;

    voilà;

    Pour toute question supplémentaire aujourd'hui, voyez mon avocat

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 44
    Points
    44
    Par défaut
    Merci pour la suggestion !!

    Est ce pareil pour les tableaux ?

    Peut on les définir en dehors des fonctions de manière à ce que les valeurs affectées dans une fonction soient disponibles pour toutes les autres fonctions appelées par la suite ?

  5. #5
    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 : 53
    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 Joratois Voir le message
    Peut on les définir en dehors des fonctions de manière à ce que les valeurs affectées dans une fonction soient disponibles pour toutes les autres fonctions appelées par la suite ?
    oui, c'est la définition d'une variable globale, je comprend pas trop la question ???
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Citation Envoyé par Bovino Voir le message
    oui, c'est la définition d'une variable globale, je comprend pas trop la question ???
    Hé bien Joratois pensait ainsi. Mais lorsqu'il a vu que son code ne donnait pas ce qu'il voulait, il s'est demandé si il pensait juste et nous a donc posé la question afin de savoir si son erreur était d'avoir mal pensé, ou bien si il y avait une autre erreur quelque part.
    Et c'était la deuxième solution, comme souligné par javatwister (ou son avocat).


    Citation Envoyé par Joratois
    Merci pour la suggestion !!

    Est ce pareil pour les tableaux ?

    Peut on les définir en dehors des fonctions de manière à ce que les valeurs affectées dans une fonction soient disponibles pour toutes les autres fonctions appelées par la suite ?
    Ce n'est pas une suggestion, c'est la solution.
    Quant aux tableaux, vous pouvez déclarer en global également. Mais comprenez bien votre erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var maVar = "Je déclare une variable globale.";
     
    function testVar1()
    {
     var maVar = "Je déclare une variable locale et par malheur, je la nomme de la même façon que ma variable globale, mais je suis et je resterai locale.";
    }
     
    function testVar2()
    {
     alert(maVar + " - J'utilise ma variable globale.");
    }
    Et donc il faut bel et bien faire ceci (ce que javatwister vous a expliqué):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function testVar1()
    {
     maVar = "Je redéfinis ma variable globale.";
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 48
    Points : 44
    Points
    44
    Par défaut
    Bonsoir,

    Oui Vermine a raison, J'ai lu dans un tutoriel que Javascript acceptait la déclaration de variables avec et sans "var". Mais comme l'auteur de tutoriel précisait qu'il était préférable de les déclarer explicitement avec "var" pour simplifier le débuggage, j'ai mis des "var" partout et je ne comprenais pas pourquoi mes variables n'affichait pas les résultats prévus...

    Merci de votre aide, bonne soirée et bonne année 2009 !

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Rendons à César ce qui lui appartient, la réponse est venue premièrement grâce à javatwister.

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

Discussions similaires

  1. 2 Variables globales une fonction c'est possible ?
    Par torquemada dans le forum Débuter
    Réponses: 2
    Dernier message: 01/06/2013, 11h33
  2. Variables globales et fonctions
    Par Steph0 dans le forum Ada
    Réponses: 5
    Dernier message: 21/04/2009, 22h56
  3. [2.3.1] Variables globales et fonctions
    Par peuplier dans le forum BIRT
    Réponses: 14
    Dernier message: 10/02/2009, 16h48
  4. variable globale et fonctions du fichier views
    Par jtadjo dans le forum Django
    Réponses: 1
    Dernier message: 03/03/2008, 12h38
  5. Variables globales dans une fonction?
    Par Death83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/07/2006, 01h53

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