JavaScript:为循环动态创建变量

IT技术 javascript
2021-01-27 01:02:29

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

function createVariables()
{
for ( i=0; i<=20; i++ )
    {
        var account = i;
        return var account + i;
    }
 }

目标是获得以下结果:

var account1;
var account2;
var account3; and etc.....
6个回答

你应该使用一个数组:

function createVariables(){
  var accounts = [];

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

  return accounts;
}

然后您可以访问accounts[0]through accounts[20]

您不能动态创建新变量,但您可以考虑为此使用Map
2021-04-10 01:02:29
想法是用我们拥有的字符串创建变量......例如,我有数组 var arr = ['myOwnName']; 并由此创建一个名为 var myOwnName 的变量;
2021-04-12 01:02:29

我知道如何做到这一点的唯一方法是使用 JavaScripteval函数。

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

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

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

只有当您知道需要哪些变量时,他的回答才是好的。
2021-03-18 01:02:29

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

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

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

绝对没有更好,node.js 不知道窗口是什么。问题是关于 js,没有任何地方指定这只应该在浏览器中工作
2021-03-14 01:02:29
绝对比eval()上面推荐的要好得多谢谢!
2021-04-01 01:02:29

您可以使用 eval() 方法在执行传递给它的 JavaScript 语句时声明动态变量。

function createVariables()
{
    for ( i=0; i<=20; i++ )
    {
        var str ="account"+ i+" = undefined";
        //Declaring and Setting dynamic variable to undefined using eval
        eval(str);
    }
}
createVariables();
let etc = { name: 'foobar', city: 'xyz', company: 'companyName' };

Object.keys(etc).forEach(key=>{
window[`${key.toUpperCase()}`] = new Object(`${etc[`${key}`]}`)
});

console.log("-->"+NAME) //foobar

这类似于@whatevermike所描述的,但它在 NodeJS 中不起作用,因为它使用 window. :(