Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中通过名称获取局部变量?_Javascript - Fatal编程技术网

Javascript 如何在JS中通过名称获取局部变量?

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 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]); } 可能:

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]);
}