如何在Javascript中创建动态变量?
例如,我有:
var myAwesomeText = "Hello World!"

但是现在我希望每次刷新页面时,变量MyAesomeText都会附加一个随机数。所以它看起来像这样:
var myAwesomeText12345 = "Hello World!"

最重要的是,如果将随机数分配给它后,如何调用新的随机变量? (即:警告(???);)
我尝试过这样的事情,但我在某个地方出错了。
var myRnd = Math.floor(Math.random()*100000);
var myVar = "MyAwesomeText" + myRnd;
str = myVar + ' = ' + '"Hello World!"';
eval(str);
alert(str);

答案 0 :(得分:2)
您可以通过window
对象访问变量:
var myRnd = Math.floor(Math.random()*100000);
var myVar = "MyAwesomeText" + myRnd;
window[myVar] = "Hello World!";
alert(window[myVar]);

请勿使用eval
:对于此问题,它速度较慢且完全没必要。如果你的MyAwesomeText
中包含的字符在JavaScript代码中具有特殊含义,例如括号,分号,冒号,逗号,大括号等等,它也会产生意想不到的副作用。
请注意,符号object['prop']
与object.prop
的结果相同。由于全局变量是在window
对象中创建的,因此您可以通过window.myvariable
表示法访问任何变量。
结合这两个事实,您可以访问动态名称为window[dynamicVariableName]
的全局变量。
答案 1 :(得分:0)
eval是要走的路
var num = 10;
var string = "var a"+num +"= 'hi'"
string
// "var a10= 'hi'"
eval(string)
a10
// 'hi'
答案 2 :(得分:0)
你错过了警告上的一个评估
var myRnd = Math.floor(Math.random()*100000);
var myVar = "MyAwesomeText" + myRnd;
str = myVar + ' = ' + '"Hello World!"';
eval(str);
alert(eval(myVar));