有没有一种方法可以使用包含变量名的字符串来访问JavaScript变量?

11
这样我就可以有一个函数,比如说 whatever_way_you_do_this = something。这个能实现吗?基本上我可以通过给一个包含变量名称的字符串来告诉函数我想要设置哪个变量。
谢谢。

这个问题与“在JavaScript中通过名称字符串动态获取全局变量”不同,因为这个问题并没有说明变量是全局的。而这很重要。 - T.J. Crowder
4个回答

21

给定:

var x = {
    myproperty: 'my value'
};

您可以通过以下方式访问该值:

var value = x['myproperty'];

如果你在寻找一个全局变量,那么你需要检查其容器 (window);

var value = window['x']['myproperty'];

8
您可以使用

标签

eval(variableString);

请小心使用eval(),因为许多人不建议使用。


更加灵活的答案。当前最佳答案只能访问属性。这个可以访问普通变量和属性 eval("x.myproperty");。出于好奇,为什么不推荐使用 eval? - Bryant James
1
@BryantJackson 安全性是一个很重要的原因,你真的不想在生产机器上创建任意代码执行的可能性。 - nickford

5
如果是名为myVar的全局变量,您可以使用以下代码:
window["myVar"]

1
具体来说:函数 setGlobal(varName, varValue) { window[varName] = varValue; } - Ates Goral

3
eval函数可以通过包含变量名称的字符串来访问变量。
eval('baseVariableName'+index) = 'something';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接