javascript - 有没有办法根据另一个变量的值创建动态变量名称?

标签 javascript

有没有办法让一个变量的值成为另一个变量的名称?例如,我希望变量名称 (value_of_i) 是该迭代期间的数字 "i"。下面的 while 循环不是我使用它的目的,它只是为了解释我要问的内容。

var i = 1;
while(i<10)
{

var value_of_i = "This loop has ran " + i + "times.";

i++;
}

对于第一次迭代,“i”等于 1,因此我希望变量名称为“1”:

var 1 = "This loop has ran " + i + "times.";

第二次交互:

var 2 = "This loop has ran " + i + "times.";

最佳答案

是的。使用bracket notation (这里是 tutorial in MDN )

Here is a working fiddle

当执行诸如 containingObject[stringVariable] 之类的操作时,您正在访问 containingObject 中的属性,其 name 是存储在 stringVariable 中的值.

// this assumes browser JavaScript where window is the global namespace
// in node.js this would be a little different
var i=0;
while(i<10){ 
   window["counters"+i] = "This is loop has ran " + i + "times.";
   i++;
}
console.log(counters3);

如果您愿意,可以使用 this 而不是 window,但这在严格模式下可能会失败。

下面是上面 MDN 链接中括号表示法如何工作的主要解释:

JavaScript 对象的属性也可以使用括号表示法来访问或设置。对象有时称为关联数组,因为每个属性都与可用于访问它的字符串值关联。因此,例如,您可以按如下方式访问 myCar 对象的属性:

myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;

您还可以使用存储在变量中的字符串值来访问属性:

var propertyName = "make";
myCar[propertyName] = "Ford";

propertyName = "model";
myCar[propertyName] = "Mustang";

关于javascript - 有没有办法根据另一个变量的值创建动态变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602347/

相关文章:

javascript - 如何在单击 <a> 标签时检查是否按下了命令键

javascript - Window.onload 在加载到基页的页面上不起作用

Javascript 悬停在 querySelectorAll 上

javascript - 如何使用 document.getElementsByClassName 添加 html

javascript - JQuery 自动完成后获取 ID 的值

javascript - 自动完成 jquery 中出现重复值

javascript - 如何等到 Javascript forEach 循环完成后再继续下一个九月

javascript - React Native map 函数无法使用同一类中的函数

javascript - 将数组压入数组

javascript - 在 JavaScript/JQuery 中实现实时搜索的突出显示功能