一尘不染

Javascript中的“变量”变量?

javascript

我知道在PHP中可能有“变量”变量。例如

$x = "variable";
$$x = "hello, world!";
echo $variable; // displays "hello, world!"

是否可以在JavaScript中将变量的名称引用为字符串?怎么做?


阅读 312

收藏
2020-04-22

共1个答案

一尘不染

对此没有单一的解决方案(当然,有eval,但是请不要认真考虑)。可以通过来动态访问 一些 全局变量window,但这不适用于函数本地的变量。
不会 成为属性的全局变量是window使用letconst和定义的变量class

几乎总是比使用可变变量更好的解决方案!
相反,您应该查看数据结构并为您的问题选择正确的结构]。

如果您有一组固定的名称,例如

// 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]);
2020-04-22