Dupliqué possible: strong>
Nom de variable dynamique JavaScript P>une question très fondamentale. Je souhaite créer une nouvelle variable globale JavaScript chaque fois qu'une fonction est appelée. La variable doit contenir l'ID de l'élément afin que je puisse facilement y accéder plus tard. p>
xxx pré> dans une fonction ultérieure, je veux accéder à la variable comme: p>
xxx pré> je suis sûr que je suis sûr que je suis sûr que je suis sûr que je suis sûr que je suis sûr m va avoir un "Doh!" moment où quelqu'un est assez gentil de répondre à cela. P> blockquote>
4 Réponses :
Vous pouvez enregistrer vos valeurs sur le hachage global:
Les variables globales sont des propriétés de la fenêtre code> objet code>, donc ou, dans votre cas: P > fenêtre.lol code> et fenêtre ['lol'] code> Définir une variable globale lol code> qui peut être consulté de l'une de ces manières.
La seconde, fenêtre ['lol'] code>, peut également être utilisée avec des noms de variables, comme celui-ci: contenu code> contient maintenant 123.
À peu près, tout peut être placé entre les crochets [] code>, vous pouvez également faire cela: p> var id = 2347;
function one(id) {
window['var' + id] = something;
}
function two(id) {
alert(window['var' + id]);
}
Je pense que cela n'est vrai que pour certaines implémentations JS (comme celles d'un navigateur mais pas nœud.js par exemple, il n'y a pas de fenêtre code> là-bas).
Oh oui, j'ai oublié le nœud et tel :(. Je pense que le nœud utilise global code> au lieu de la fenêtre, je ne sais pas sur les autres ... Eh bien, vous pourriez aller au milieu des normes de codage et eval x ].
Du ...
store.get( 123 ) // 'some value' store.get( 456 ) // undefined
+1 Pour le dernier paragraphe, mais je pense que cette solution est un peu trop excédentaire. Au lieu d'une carte globale code> la variable, vous créez une variable globale stocker code>. La simple chose que cela ajoute est un sucre syntaxique à mon avis.
@PIMVDB Yea, c'est une overcilleuse. C'est la forme la plus élémentaire de ce modèle. Il devient plus utile lorsque le comportement Get / Set est plus complexe (lorsque plusieurs commandes doivent être exécutées) ...
Je dirais que vous ne voulez pas vraiment faire beaucoup de variables mondiales. Au lieu de cela, vous pouvez simplement faire un objet ou une matrice globale et joindre toutes vos autres variables à cela. Dans ce cas, vous voulez probablement un objet: puis, pour aller chercher ces informations plus tard plus tard, vous pouvez le récupérer avec ceci: P> function idFactory() {
this.ids = {};
}
idFactory.prototype = {
makeSomething: function(id) {
// create something that goes with this id
this.ids[id] = something;
},
retrieveSomething: function(id) {
return(this.ids[id]);
},
clear: function() {
this.ids = {};
}
};
// then you would use it like this:
var myIds = new idFactory();
myIds.makeSomething(2347);
var value = myIds.retrieveSomething(2347);
Voulez-vous une nouvelle variable globale ou une variable globale existante
ID code> pour avoir une nouvelle valeur?Vous voulez éviter i> Variables globales. Créez votre propre espace de noms à la place ...
Faites juste un tableau et écrivez Vars [12345] au lieu de Vars12345.
Merci à vous tous pour ces grandes réponses!