Javascript 如何在JS中通过名称获取局部变量?
全局变量的工作示例: var example_var = 'global var example'; var x = function(){ var var_name = 'example_var'; alert('Global var value is: ' + window[var_name]); } var-example_-var=‘全局var-example’; var x=函数(){ var var_name='example_var'; 警报('全局变量值为:'+窗口[var_name]); } 如何对局部变量执行相同的操作?像这样(不起作用的例子): var x=函数(){ var-example_-var=‘本地var-example’; var var_name='example_var'; 警报('本地变量值为:'+窗口[var_name]); } 可能:Javascript 如何在JS中通过名称获取局部变量?,javascript,Javascript,全局变量的工作示例: var example_var = 'global var example'; var x = function(){ var var_name = 'example_var'; alert('Global var value is: ' + window[var_name]); } var-example_-var=‘全局var-example’; var x=函数(){ var var_name='example_var'; 警报('全局变量值为:'+
var x = function(){
var example_var = 'Local var example';
var var_name = example_var;
alert('Local var value is: ' + var_name);
}
或:
或
如果没有其他方法,您可以尝试
eval
it
var x = function(){
var example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + eval(var_name));
}
目前这个问题有两种解决方案。
1.eval(),但我真的不喜欢使用邪恶() 2.我们可以将变量声明从var更改为: var x = function(){ this.example_var = 'this.var example'; this.var_name = 'example_var'; alert('Local variable value is: ' + this[var_name]); } var x=函数(){ this.example_var='this.var example'; this.var_name='example_var'; 警报('局部变量值为:'+此[var_name]); }
您不想使用
eval
;本地范围的对象可能是您的最佳选择:
var x = function(){
var self = {};
self.example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + self[var_name]);
}
复制品:为什么?这通常是用艰难的方式处理变量的一个标志。这是问题的一个清晰的例子。事实上,此代码用于通过不同的方法扩展对象,这些方法的名称包含在对象本身中。@oswork:没有可以从常规Javascript访问的函数作用域对象进行扩展,所以这个问题在这里不适用。您试图解决的问题是什么?此的可能重复经常相当于
窗口
,因此可能会删除全局变量。问题是按名称访问变量。您的示例:1)var_name值是“example_var”而不是example_var的值2)var_name仍然包含变量的名称而不是它的值3)您没有尝试访问的其他变量。这是一个解决方法(一个好方法),但并不能严格回答问题。
var x = function(){
var example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + eval(var_name));
}
var x = function(){
this.example_var = 'this.var example';
this.var_name = 'example_var';
alert('Local variable value is: ' + this[var_name]);
}
var x = function(){
var self = {};
self.example_var = 'Local var example';
var var_name = 'example_var';
alert('Local var value is: ' + self[var_name]);
}