Comment obtenir la variable locale par son nom dans JS?
-
23-09-2019 - |
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]); }
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