6
votes

Créez une nouvelle variable globale unique chaque fois qu'une fonction est exécutée dans JavaScript

Dupliqué possible:
Nom de variable dynamique JavaScript

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. xxx

dans une fonction ultérieure, je veux accéder à la variable comme: xxx

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.


4 commentaires

Voulez-vous une nouvelle variable globale ou une variable globale existante ID pour avoir une nouvelle valeur?


Vous voulez éviter 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!


4 Réponses :


3
votes

Vous pouvez enregistrer vos valeurs sur le hachage global: xxx


0 commentaires

4
votes

Les variables globales sont des propriétés de la fenêtre code> objet code>, donc 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: xxx pré>

contenu code> contient maintenant 123. À peu près, tout peut être placé entre les crochets [] code>, vous pouvez également faire cela: p> xxx pré>

ou, dans votre cas: P >

var id = 2347;
function one(id) {
  window['var' + id] = something;
}
function two(id) {
  alert(window['var' + id]);
}


2 commentaires

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 là-bas).


Oh oui, j'ai oublié le nœud et tel :(. Je pense que le nœud utilise global 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 ].



7
votes

Du ...

store.get( 123 ) // 'some value'
store.get( 456 ) // undefined


2 commentaires

+1 Pour le dernier paragraphe, mais je pense que cette solution est un peu trop excédentaire. Au lieu d'une carte globale la variable, vous créez une variable globale stocker . 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) ...



3
votes

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: xxx pré>

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);


0 commentaires