有没有办法让一个变量的值成为另一个变量的名称?例如,我希望变量名称 (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 )
当执行诸如 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/