3
在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
字符串名称。
请参阅http://stackoverflow.com/questions/598878/how-can-i-access-local-scope-dynamically-in-javascript和http://stackoverflow.com/questions/2336508/javascript-get-访问本地变量或变量在闭包的名称和http://stackoverflow.com/questions/1119335/javascript-local-variable-declare – 2011-02-23 18:04:14