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 :

Déclaration des variables globales en javascript non recommandée


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 47
    Points
    47
    Par défaut Déclaration des variables globales en javascript non recommandée
    Bonjour à tous ,

    Je voudrais savoir, pour quelle raison la déclaration de variables globales en javascript est peu appréciée, d'après les echos.

    Merci d'avance pour vos réponses .

  2. #2
    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
    C'est à cause, notamment, de ce qui est expliqué là : FAQ : Pourquoi faut-il toujours déclarer ses variables ?

    Pour résumer, quand tu déclares une variables sans le mot clé "var", elle devient une propriété de l'objet implicite : window. Comme Javascript est l'implémentation de la norme ECMAScript et que chaque navigateur à sa propre implémentation, il faut être vigilent. Surtout avec les anciennes version d'IE comme c'est bien expliqué dans le lien ci-dessus.

    Comme les variables partagent le même namespace global (window) si tu as plusieurs scripts que tu ne maitrises pas (d'autres auteurs), ceux-ci peuvent avoir des "variables globales" du même nom, source d'erreur dans l'exécution des scripts de ta page.

    Pour être propre dans la déclaration, utiliser ça : FAQ : Comment créer une variable globale dans une fonction ?

    Mais je pense que la meilleure démarche à utiliser est "d'englober ton code" dans une fonction qui retourne un objet qui contient les fonctions/variables qui ont besoin d'être utilisés à l'extérieur de ce module. Un peu à la méthode des "modules pattern" qu'utilisent les librairies externes javascript (jquery etc)

    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
    var MON_MODULE = (function() {
        var ma_var_publique = 10;
     
        return { 
            // une fonction qui peut accéder à ma_var_publique à l'extérieur du module
            get_var_publique: function() {
                return ma_var_publique; 
            }
        };
     
    })();
     
    // Pour accéder à ma_var_publique à l'extérieur du module :
    alert(MON_MODULE.get_var_publique());

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    Merci pour la réponse, est que c'est vraiment la seule raison?

  4. #4
    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
    heu il y a deux raison exposées ci dessus ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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
    Si tu veux plus de détail, je te conseille de lire des articles intéressants de la part des "mentors" de Javascript.

    Par exemple l'article : Douglas Crockford - Global variables are evil, qui explique parfaitement pourquoi il faut être vigilant avec.
    Ou de ce même auteur, JSLint - outil d'analyse de code JS détecte ces variables (entre beaucoup d'autres choses).

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    C'est vrai SpaceFrog, desolé, je me suis mal exprimé, je voulais dire plutôt Est-ce qu'il y a que ça comme raisons".

    Kaamo, merci beaucoup pour ces références, je vais bouquiner ça.

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

Discussions similaires

  1. portée des variables globales dans un fichier js
    Par crakazoid dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2006, 16h49
  2. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 10h55
  3. De la bonne pratique des variables globales...
    Par say dans le forum C++Builder
    Réponses: 9
    Dernier message: 25/11/2005, 09h47
  4. [MASM32] Déclaration des variables
    Par mrousse dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/09/2005, 14h30
  5. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18

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