4 回答
TA贡献1909条经验 获得超7个赞
对此没有单一的解决方案(嗯,有eval
,但不要认真考虑)。可以通过动态访问某些全局变量window
,但这对于函数本地变量不起作用。不成为属性的全局变量是window
用let
和定义的变量const
,以及class
es。
几乎总是比使用变量变量更好的解决方案!相反,您应该查看数据结构并为您的问题选择正确的数据结构。
如果你有一组固定的名字,比如
// BAD
var foo = 42;
var bar = 21;
var key = 'foo';
console.log(eval(key));
将这些名称/值存储为对象的属性,并使用括号表示法动态查找它们:
// GOOD
var obj = {
foo: 42,
bar: 21,
};
var key = 'foo';
console.log(obj[key]);
在ES2015 +中,使用简洁的属性表示法为现有变量执行此操作更加容易:
// GOOD
var foo = 42;
var bar = 21;
var obj = {foo, bar};
var key = 'foo';
console.log(obj[key]);
如果你有“连续”编号的变量,例如
// BAD
var foo1 = 'foo';
var foo2 = 'bar';
var foo3 = 'baz';
var index = 1;
console.log(eval('foo' + index));
然后你应该使用数组而只是使用索引来访问相应的值:
// GOOD
var foos = ['foo', 'bar', 'baz'];
var index = 1;
console.log(foos[index - 1]);
TA贡献1788条经验 获得超4个赞
要在javascript中仅使用字符串引用变量,您可以使用
window['your_variable_name']
您也可以在变量中设置和引用变量和对象。
添加回答
举报