【问题标题】:Javascript Dynamic Variable (Random number added)Javascript 动态变量(添加随机数)
【发布时间】:2016-09-15 12:29:53
【问题描述】:

如何在 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);

【问题讨论】:

  • 你可以创建一个字符串并使用eval()
  • 当您不信任输入时,eval 很危险,否则非常有用
  • 但在这种情况下完全没有必要。它效率低下,因为它需要在现场解析脚本。
  • 喜欢慢 0.001 毫秒?不得不写一次 window[var1] 而不是 var1 效率更低
  • 如果你认为你需要一个动态变量,那你可能错了。使用数组或对象。

标签: javascript variables random dynamic


【解决方案1】:

您可以通过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] 的全局变量。

【讨论】:

  • 或... alert(eval(myVar)); :)
  • 谢谢大家!这很好用。我将在更大的项目中使用它,看看我是否遇到任何问题!
【解决方案2】:

评估是要走的路

var num = 10;
var string = "var a"+num +"= 'hi'"
string
// "var a10= 'hi'"
eval(string)
a10
// 'hi'

【讨论】:

    【解决方案3】:

    你错过了一次警报评估

    var myRnd = Math.floor(Math.random()*100000);
    var myVar = "MyAwesomeText" + myRnd;
    str = myVar + ' = ' + '"Hello World!"';
    eval(str);
    
    alert(eval(myVar));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2013-06-27
      • 2012-04-28
      • 2016-11-25
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多