【问题标题】:Dynamic variable in loop javascript循环javascript中的动态变量
【发布时间】:2014-05-22 13:50:30
【问题描述】:

我想在循环中创建一个动态变量。 我发现了一些关于 eval 和 window 的东西,但我不知道如何使用它。

这是我的循环,我想创建一个从 m1 到 m9 的 9 个变量名称。我的意思是变量的名字必须是m1到m9

for(i=1; i<10; i++){

  var m+i = "Something"

}

请帮我解决这个问题。真的很感激。

【问题讨论】:

  • 你真的不应该,改用数组。
  • 为什么要这样做而不是简单地使用现有的数组或对象语法?
  • 是的,您确实可以使用eval 做到这一点。但是应该你这样做吗?使用数组并使用 m[0]m[8] 几乎总是更好。

标签: javascript


【解决方案1】:

您不想创建 9 个变量。相信我。你想创建一个对象。

var m = {};
for(var i=1; i<10; i++){
    m[i] = "Something";
}

您也可以创建一个数组 (m = []),但由于您从 1 而不是 0 开始,我建议使用一个对象。

【讨论】:

  • 我会选择数组,因为它有编号的索引!
  • 如果 OP 不需要从 1 开始(出于某种原因),那么我同意 @adeneo,但 Rocket 的解决方案已经说明使用对象的原因与 OP 的代码相关声明它从 1 开始。当然,如果他们能够解释/为什么/他们认为首先需要动态有序变量,那么建议 OP 也会更容易。
  • @adeneo:我最初使用数组得到答案,但我改为对象,因为在这种情况下m[0] 将被取消设置,我不确定这是否会成为问题。如果他的i10100 开头呢?这就是我使用对象的原因。
  • @MattiasBuelens:感谢您编辑帖子。我复制并粘贴了 OP 的代码,所以我忘了修复 var :-)
【解决方案2】:

但如果你仍然想创建 9 个变量,尽管如此,你仍然可以:

for(i=1; i<10; i++){
  eval('var m'+i+'='+i)
}

(是的,你不应该这样做)。

【讨论】:

  • 这是真的。您可以这样做,但不建议这样做:-)
【解决方案3】:
var object = {};     
var name = "m";
for(i=1; i<10; i++){
  object[name+i] = "Something";
}
console.log(object.m1); // "Something", same for m2,m3,m4,m5...,m9

不过考虑一下"m" 是否真的有必要,数组会更快:

var array = [];
for(i=1; i<10; i++){
  array.push("Something");
}
console.log(array[0]); // "Something", same for 1,2,...,8

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2019-02-05
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多