Question

Exemple de travail var global:

var example_var = 'global var example';

var x = function(){
    var var_name = 'example_var';
    alert('Global var value is: ' + window[var_name]);
}

Comment puis-je faire même chose avec une variable locale? Comme cela (par exemple ne fonctionne pas):

var x = function(){
    var example_var = 'Local var example';
    var var_name = 'example_var';
    alert('Local var value is: ' + window[var_name]);
}
Était-ce utile?

La solution

Vous ne voulez pas utiliser eval; un pourrait être votre meilleure option objet scope localement:

var x = function(){
    var self = {};
    self.example_var = 'Local var example';

    var var_name = 'example_var';

    alert('Local var value is: ' + self[var_name]);
}

Autres conseils

Si vous avez pas d'autre moyen, vous pouvez essayer eval it

var x = function(){
    var example_var = 'Local var example';
    var var_name = 'example_var';
    alert('Local var value is: ' + eval(var_name));
}

peut-être:

var x = function(){
    var example_var = 'Local var example';
    var var_name = example_var;
    alert('Local var value is: ' + var_name);
}

ou

  var x = function(){
        var example_var = 'Local var example';
       window.var_name = example_var;
        alert('Local var value is: ' + window[var_name]);
    }

ou

  var x = function(){
            var var_name = 'Local var example';    
            alert('Local var value is: ' + var_name);
        }

À l'heure actuelle, il y a deux solutions à ce problème.
1. eval (), mais je n'aime vraiment pas utiliser le mal ()
2. nous pouvons changer de déclaration de variable var à ceci:

var x = function(){
    this.example_var = 'this.var example';
    this.var_name = 'example_var';
    alert('Local variable value is: ' + this[var_name]);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top