函数范围内的变量变量

时间:2009-12-04 17:21:30

标签: javascript variables scope

在你问之前......我不打算这样做。出于显而易见的原因,这是不好的做法。我很好奇是否有可能。

在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;

我怀疑这是可能的,但我想我只是要求踢。

1 个答案:

答案 0 :(得分:2)

不,没有对象可以用来访问函数上下文中的var变量(即使它们是该执行上下文中称为“变量对象”的对象的属性;该对象没有公开的名称,因此无法直接访问)。全局上下文中的var事情有点特殊,你不应该依赖它(尽管规范确实定义了它)。如果要将这些变量作为全局对象(window的属性,对于Web浏览器)的属性进行访问,请明确将它们分配给window属性,而不是使用var,以便明确:

window.x = 'my value';

或者如果您愿意:

window["x"] = 'my value';

(这两个语句具有相同的结果,都在window对象上创建/设置一个名为“x”的属性。)