在你问之前......我不打算这样做。出于显而易见的原因,这是不好的做法。我很好奇是否有可能。
在javascript中,您可以使用括号语法在全局范围内创建变量:
var var_name = 'my_var',
var_value = 'my_value';
window[var_name] = var_value;
alert( my_var ); // Works! alerts user: 'my_value'
但是,当你在函数内部并使用'var'关键字时,你创建的变量本地作用于它们声明的函数。是否有一些对象可以与括号语法一起使用(像window一样)来访问本地范围的变量?像这样:
this_function[var_name] = var_value;
我怀疑这是可能的,但我想我只是要求踢。
答案 0 :(得分:2)
不,没有对象可以用来访问函数上下文中的var
变量(即使它们是该执行上下文中称为“变量对象”的对象的属性;该对象没有公开的名称,因此无法直接访问)。全局上下文中的var
事情有点特殊,你不应该依赖它(尽管规范确实定义了它)。如果要将这些变量作为全局对象(window
的属性,对于Web浏览器)的属性进行访问,请明确将它们分配给window
属性,而不是使用var
,以便明确:
window.x = 'my value';
或者如果您愿意:
window["x"] = 'my value';
(这两个语句具有相同的结果,都在window
对象上创建/设置一个名为“x”的属性。)