Comment puis-je déclarer une variable globale en JavaScript?
javascript
global-variables
Danseur
la source
la source
window
est disponible uniquement dans les navigateurs. Pourriez-vous modifier votre réponse pour qu'elle fonctionne dans tous les environnements? Voir Comment obtenir l'objet global en JavaScript?Si c'est la seule application où vous allez utiliser cette variable, l'approche de Felix est excellente. Cependant, si vous écrivez un plugin jQuery, considérez les variables "namespacing" (détails sur les guillemets plus loin ...) et les fonctions nécessaires sous l'objet jQuery. Par exemple, je travaille actuellement sur un menu contextuel jQuery que j'ai appelé miniMenu. Ainsi, j'ai défini un "namespace"
miniMenu
sous jQuery, et j'y place tout.La raison pour laquelle j'utilise des guillemets lorsque je parle d'espaces de noms javascript est qu'ils ne sont pas vraiment des espaces de noms au sens normal du terme. Au lieu de cela, j'utilise simplement un objet javascript et place toutes mes fonctions et variables en tant que propriétés de cet objet.
De plus, pour plus de commodité, je sous-espace généralement l'espace de noms du plugin avec un
i
espace de noms pour les éléments qui ne devraient être utilisés qu'en interne dans le plugin, afin de le cacher aux utilisateurs du plugin.Voilà comment cela fonctionne:
Maintenant, je peux simplement faire
$.miniMenu.i.globalVar = 3
ou$.miniMenu.i.parseSomeStuff = function(...) {...}
chaque fois que j'ai besoin de sauvegarder quelque chose globalement, et je le garde toujours hors de l'espace de noms global.la source
delete $.miniMenu
. Est-ce que c'est bon?delete $.miniMenu
.EDIT La question concerne JavaScript, la réponse concerne jQuery, ce qui est faux. C'est une vieille réponse, de l'époque où jQuery était répandu.
Au lieu de cela, je recommande de comprendre les portées et les fermetures en JavaScript
Ancienne, mauvaise réponse: avec jQuery, vous pouvez simplement le faire, peu importe où se trouve la déclaration:
Et sera disponible partout. Je l'utilise pour créer des galeries d'images rapides, lorsque les images sont réparties à différents endroits, comme ceci:
Astuce : exécutez tout ce code dans la console de cette page ;-)
la source
$current = 0;
au début de la fonction, la dernière ne fonctionnera pas.Voici un exemple de base d'une variable globale à laquelle le reste de vos fonctions peut accéder. Voici un exemple en direct pour vous: http://jsfiddle.net/fxCE9/
Si vous faites cela dans une fonction jquery ready (), assurez-vous que votre variable est à l'intérieur de la fonction ready () avec vos autres fonctions.
la source
Déclarer la variable en dehors des fonctions
la source
La meilleure façon est d'utiliser
closures
, car l'window
objet devient très, très encombré de propriétés.HTML
init.js (basé sur cette réponse )
script.js
Voici le plnkr . J'espère que cela vous aidera!
la source