140 votes

Ce qui est le « meilleur » moyen pour définir une variable globale en JavaScript ?

Je me demande ce que le meilleur moyen est de définir une variable globale avec Jquery / Javascript qui peut être utilisé et mis à jour par des fonctions multiples.

J’ai un site complex assez plu qui utilise des curseurs (http://www.nwph.info/nwph/nwpho/), je tiens à ajouter un fil d’Ariane dynamique et pensée que la restructuration le code afin que les différentes fonctions ne peuvent lire un partage variable globale serait beaucoup mieux que continuellement en passant le nom d’objet sélectionné actuel autour.

A bientôt Paul

218voto

Felix Kling Points 247451

Si vous devez générer des variables globales dans le code de production (qui devrait être évité) toujours déclarer explicitement:

Bien qu’il soit possible de définir une variable globale en omettant simplement `` (en supposant qu’il n’y a aucune variable locale du même nom), cela génère donc implicite global, qui est une mauvaise chose à faire et génèrerait une erreur en mode strict.

52voto

Tomas Lycken Points 23432

Si c'est la seule application où vous allez utiliser cette variable, Felix approche est excellent. Toutefois, si vous êtes à l'écriture d'un plugin jQuery, prendre en compte namespacing" (plus de détails sur les guillemets plus tard...) les variables et les fonctions nécessaires en vertu de l'objet jQuery. Par exemple, je suis actuellement en train de travailler sur un jQuery menu déroulant que j'ai appelé miniMenu. Ainsi, j'ai défini un "espace de noms" miniMenu sous jQuery, et je place tout là-bas.

La raison pour laquelle je utiliser des guillemets quand je parle de javascript espaces de noms, c'est qu'ils ne sont pas vraiment des espaces de noms dans le sens normal. Au lieu de cela, je viens d'utiliser un objet javascript et le lieu de toutes mes fonctions et de variables comme les propriétés de cet objet.

Aussi, pour des raisons de commodité, j'ai l'habitude de sous-espace le plugin espace de noms avec un i d'espace de noms pour les choses qui ne devrait être utilisé en interne dans le plugin, de manière à masquer pour les utilisateurs du plugin.

Voilà comment cela fonctionne:

// An object to define utility functions and global variables on:
$.miniMenu = new Object(); 
// An object to define internal stuff for the plugin:
$.miniMenu.i = new Object();

Maintenant que je peux le faire $.miniMenu.i.globalVar = 3 ou $.miniMenu.i.parseSomeStuff = function(...) {...} chaque fois que j'ai besoin de sauver quelque chose à l'échelle mondiale, et j'ai toujours le garder hors de l'espace de noms global.

15voto

Paul Dragoonis Points 1570

Voici un exemple d’une variable globale pouvant accéder au reste de vos fonctions de base. Voici un exemple vivant pour vous : http://jsfiddle.net/fxCE9/

Si vous faites cela au sein de la fonction jquery ready() alors assurez-vous que votre variable est à l’intérieur de la ready() fonction alongwith vos autres fonctions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X