JavaScript:动态创建循环变量

use*_*349 49 javascript

如何使用for循环动态创建变量,并返回.

function createVariables()
{
for ( i=0; i<=20; i++ )
    {
        var account = i;
        return var account + i;
    }
 }
Run Code Online (Sandbox Code Playgroud)

目标是得到以下结果:

var account1;
var account2;
var account3; and etc.....
Run Code Online (Sandbox Code Playgroud)

Dom*_*nic 96

你应该使用一个数组:

function createVariables(){
  var accounts = [];

  for (var i = 0; i <= 20; ++i) {
      accounts[i] = "whatever";
  }

  return accounts;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以访问accounts[0]通过accounts[20].


Not*_*tMe 17

我知道如何做到这一点的唯一方法是使用JavaScript eval函数.

就像是 eval("account" + 1 + "='some value'");

http://www.w3schools.com/jsref/jsref_eval.asp

但是,我认为@Domenic有更好的答案.


小智 10

我不确定是否要回答一个老问题,但是我在自己寻求答案时偶然发现了这个问题。

for (var i = 1; i < 11; i++) { // Creating 10 objects
window["Object"+i] = new Object();
}
console.log(Object7); // is not undefined
Run Code Online (Sandbox Code Playgroud)

上述代码在创建动态对象时循环到 10,如https://www.codecademy.com/en/forum_questions/51068e93f73ad4947a005629 所述

  • 绝对比上面的 `eval()` 推荐好得多。谢谢! (3认同)
  • 绝对不是更好,node.js 不知道窗口是什么。问题是关于js的,没有指定这只能在浏览器中工作 (2认同)

小智 8

我发现这是最简单的解决方案

for (var i = 0; i < 10; i++) {
   this["RONAK"+i] = "MY VAL";
}
Run Code Online (Sandbox Code Playgroud)

输出

RONAK0 = "MY VAL"
RONAK1 = "MY VAL"
RONAK2 = "MY VAL"
...
RONAK9 = "MY VAL"
Run Code Online (Sandbox Code Playgroud)