<分区>
在 Javascript 中,我习惯于使用 []
运算符“动态地”访问已知命名空间中的变量(如果我在这里使用了错误的词,请纠正我)。例如(来自全局命名空间):
var a = 1;
window['a']; # => 1
或者来自对象类型的命名空间:
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
完全通过它的字符串名称。