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 :

Portée des noms des arguments de fonctions : locale ou globale?


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Par défaut Portée des noms des arguments de fonctions : locale ou globale?
    Bonjour,

    J'ai beau avoir lu plusieurs tutoriels sur Javascript, je ne trouve pas la réponse à une question très simple:
    Lorsqu'on définit une fonction avec des arguments, les noms des arguments deviennent-ils globaux (et donc il faut des noms d'arguments différents pour chaque fonction) ou bien sont-ils locaux (dès lors on pourrait utiliser les mêmes arguments dans plusieurs fonction).

    Pour résumer, quels exemples ci-dessous sont corrects ?

    Exemple 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function coucou(a) {
    }
     
    function hello(a) {
    }
    Exemple 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function coucou(a) {
    }
     
    function hello(b) {
    }
    Exemple 3 (dans ce cas-ci la question est "Y aura-t-il des interférences entre la variable définie globalement et l'argument de la fonction ?") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var a;
    function coucou(a) {
    }
    Merci d'avance.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    exemple 1 :
    a est une variable locale : elle n'existe que dans la fonction coucou(). La fonction hello() ne voit pas la variable a.

    exemple 2 :
    a représente deux variables locales. La variable a définie dans coucou() est différente de la variable a définie dans hello().

    exemple 3 :
    Cet exemple est incomplet.
    a est à la fois une variable globale (var a) et une variable locale (le paramètre de la fonction coucou()). Il faut donc les distinguer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var a = "tout le monde !"; // variable globale
    function coucou(a) 
    {
      alert(a+" "+this.a);
     
      // a désigne le paramètre de la fonction coucou
      // this.a désigne la variable globale déclarée avec le mot clef var
    }
     
    coucou("bonjour");
    Si tu exécutes cette fonction la boite de dialogue affichera :
    bonjour tout le monde !
    donc le contenu du paramètre a et le contenu de ta variable globale a.

  3. #3
    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
    Billets dans le blog
    20
    Par défaut
    Attention Auteur, tu as interverti les exemples 1 et 2 il me semble...
    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

  4. #4
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Par défaut OK!
    Réponses très claires, un grand merci Auteur et Bovino!

    Dommage que cette précision soit généralement absente des tutoriels, ce n'est pourtant pas anodin...

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Attention Auteur, tu as interverti les exemples 1 et 2 il me semble...
    ouh là, oui c'est vrai, j'ai effectivement inversé l'exemple 1 et l'exemple 2

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/11/2014, 12h39
  2. récupérer la liste des noms des champs d'une table
    Par la_didise dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 16h55
  3. [C#] Liste des noms des jours
    Par Oberown dans le forum C#
    Réponses: 9
    Dernier message: 07/11/2005, 11h38
  4. Affichage des noms des IDC_STATIC dynamiquement
    Par tonycalv dans le forum MFC
    Réponses: 6
    Dernier message: 11/09/2005, 16h07
  5. Comment obtenir la liste des noms des ordinateurs du réseau ?
    Par da_latifa dans le forum Web & réseau
    Réponses: 2
    Dernier message: 17/08/2005, 11h58

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