在你问之前......我不打算真正这样做。出于显而易见的原因,这是不好的做法。我只是好奇这是否可能。
在 javascript 中,可以使用括号语法在全局范围内创建变量:
var var_name = 'my_var',
var_value = 'my_value';
window[var_name] = var_value;
alert( my_var ); // Works! alerts user: 'my_value'
但是,当您在函数内部并使用“var”关键字时,您创建的变量的局部范围仅限于声明它们的函数。是否有一些对象可以与括号语法一起使用 (像窗口)来访问局部范围的变量?像这样:
this_function[var_name] = var_value;
我怀疑这是可能的,但我想我会要求踢球。
最佳答案
不,没有对象可以用来访问函数上下文中的 var
变量(即使它们是该执行上下文的称为“变量对象”的对象的属性;该对象没有公开name 等不能直接访问)。全局上下文中的 var
有点特殊,您不应该依赖它(尽管规范确实定义了它)。如果你想访问这些变量作为全局对象的属性(window
,在网络浏览器的情况下),显式地将它们分配给 window
属性而不是使用 var
,为清楚起见:
window.x = 'my value';
或者如果您愿意:
window["x"] = 'my value';
(这两个语句具有相同的结果,都在 window
对象上创建/设置了一个名为“x”的属性。)
关于javascript - 函数范围内的可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848424/