This question already has answers here:
How can I access local scope dynamically in javascript?
(4个答案)
已关闭6年。
在Javascript中,我习惯于使用
或从对象类型的 namespace :
我熟悉如何确定
但是在函数本身中,如何使用
即,我希望以下函数调用返回
您不能使用
在现实的环境中,我只是重构以避免动态创建和访问局部变量,因为无论如何这通常是个坏主意,但是作为一个学术问题,我很好奇是否可以通过其字符串名称访问
(4个答案)
已关闭6年。
在Javascript中,我习惯于使用
[]
运算符“动态地”访问已知 namespace 中的变量(如果在此处使用错误的单词,请更正我)。例如(从全局 namespace 中):var a = 1;
window['a']; # => 1
或从对象类型的 namespace :
var a = { b: 1 };
a['b']; # => 1
我熟悉如何确定
this
的基础知识:var a = function(){ return this['c']; };
var b = { c: 1 };
a.apply(b); # => 1;
但是在函数本身中,如何使用
var
访问刚刚实例化(或重新定义)的局部变量?即,我希望以下函数调用返回
1
,但返回,而无需调用a
:function(){
var a = 1;
return a;
}
您不能使用
window['a']
,因为a
是在本地定义的,您不能使用this['a']
,因为this
会根据调用函数的上下文而变化。在现实的环境中,我只是重构以避免动态创建和访问局部变量,因为无论如何这通常是个坏主意,但是作为一个学术问题,我很好奇是否可以通过其字符串名称访问
a
。 最佳答案
您正在将局部变量(不是对象的属性)与属性(不是局部变量)混合在一起。您的问题没有答案,或者答案是“无法完成”。
关于javascript - 如何从闭包范围动态访问局部变量(通过其名称的String形式)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5094862/