This question already has answers here:
How can I access local scope dynamically in javascript?

(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/

10-11 14:22
查看更多