javascript - JavaScript 中的 "Variable"变量

标签 javascript variables variable-variables

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

$x = "variable";
$$x = "Hello, World!";
echo $variable; // Displays "Hello, World!"

是否可以在 JavaScript 中通过名称作为字符串来引用变量?该怎么做呢?

最佳答案

tl;博士:Don't use eval !

对此没有单一的解决方案。可以通过 window 动态访问一些全局变量,但这不适用于函数的局部变量。 成为 window 属性的全局变量是用 let 定义的变量和const ,和class es。

几乎总是有比使用可变变量更好的解决方案! 相反,您应该查看 data structures并选择适合您问题的选项。

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

// BAD - DON'T DO THIS!!!
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 - DON'T DO THIS!!!
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]);

关于javascript - JavaScript 中的 "Variable"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481540/

相关文章:

javascript - 在网络上检测移动浏览器?

java |将 Double 拆分为 2 个整数|将 substring 和 valueOf 与 str 缓冲区一起使用时出现错误

javascript - 值不能从 ReadableNativeMap 转换为 double

python - Python 函数中包含的变量值

php - 将变量变量设置为数组键

PHP 变量对象属性

php - 如何在 PHP 中使用 for 循环打印 $title1 $title2 $title3...

javascript - 如何删除绘图层菜单选项?

javascript - Webpack - _ 未定义

javascript - 输入字段的更改和模糊事件不会被触发