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]);
}
È stato utile?

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
scroll top