Come arrivare variabile locale con il suo nome in JS?
-
23-09-2019 - |
Domanda
esempio Lavorare con var globale:
var example_var = 'global var example'; var x = function(){ var var_name = 'example_var'; alert('Global var value is: ' + window[var_name]); }
Come posso fare stessa cosa con una variabile locale? Ti piace questa (ad esempio non funziona):
var x = function(){ var example_var = 'Local var example'; var var_name = 'example_var'; alert('Local var value is: ' + window[var_name]); }
Soluzione
Se non si desidera utilizzare eval
; un oggetto con ambito a livello locale potrebbe essere la soluzione migliore:
var x = function(){
var self = {};
self.example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + self[var_name]);
}
Altri suggerimenti
Se si dispone di nessun altro modo, si può provare eval
it
var x = function(){
var example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + eval(var_name));
}
forse:
var x = function(){
var example_var = 'Local var example';
var var_name = example_var;
alert('Local var value is: ' + var_name);
}
o
var x = function(){
var example_var = 'Local var example';
window.var_name = example_var;
alert('Local var value is: ' + window[var_name]);
}
o
var x = function(){
var var_name = 'Local var example';
alert('Local var value is: ' + var_name);
}
Al momento ci sono due soluzioni a questo problema.
1. eval (), ma io davvero non piace usare il male ()
2. possiamo cambiare dichiarazione di variabile da var a questo:
var x = function(){ this.example_var = 'this.var example'; this.var_name = 'example_var'; alert('Local variable value is: ' + this[var_name]); }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow