【问题标题】:How to dynamically generate variables in JavaScript? [duplicate]如何在 JavaScript 中动态生成变量? [复制]
【发布时间】:2013-08-11 19:36:43
【问题描述】:

我的目标是动态生成变量foo1foo2foo3,并使用以下代码将bar 分配给它们:

for (var i=1;i<=3;i++) {
    myapp.set({ foo+i: "bar" })
}

我尝试在foo 上使用eval,但它不起作用。有任何想法吗?

【问题讨论】:

  • 为什么不使用数组?访问数据会更容易。
  • 你能把你尝试在eval上使用foo时使用的代码贴出来吗?

标签: javascript


【解决方案1】:
for (var i=1;i<=3;i++) {
    var myObj = {};
    myObj['foo' + i] = 'bar';

    myapp.set(myObj);
}

【讨论】:

    【解决方案2】:

    您可以使用方括号来执行此操作。如果您希望变量在全局范围内,请使用window['foo'+i]

    例如:

    for (var i=1; i<=3; i++) {
        window['foo'+i] = 'bar';
        // OR, if you want them in 'myApp' scope:
        myApp['foo'+i] = 'bar';
    }
    

    【讨论】:

    • 为什么要把变量放在全局范围内?闻起来像糟糕的建筑......
    • 这只是一个例子,展示了一个你可以应用到任何你想要的范围的模式。我不建议 OP 使用全局范围,就像任何答案都建议您使用 'foo' 作为变量名。
    • 只是说我们可能不应该使用全局范围的例子。很多人都是编程新手,这可能会导致混乱。大多数新程序员都知道 foo 是一个通用名称,而很多人不明白什么是全局作用域。我想我可以提出更好的评论,但我只是希望人们在复制和粘贴之前三思而后行
    【解决方案3】:

    http://jsfiddle.net/TASfG/

    var myApp = {};
    
    for (var i=1; i <= 3; i++) {
        myApp['foo'+i] = "bar";
    }
    
    console.log(myApp);
    

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 2021-08-29
      • 2022-08-04
      • 2011-04-29
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多