如何使用 for 循环动态创建变量并返回。
function createVariables()
{
for ( i=0; i<=20; i++ )
{
var account = i;
return var account + i;
}
}
目标是获得以下结果:
var account1;
var account2;
var account3; and etc.....
如何使用 for 循环动态创建变量并返回。
function createVariables()
{
for ( i=0; i<=20; i++ )
{
var account = i;
return var account + i;
}
}
目标是获得以下结果:
var account1;
var account2;
var account3; and etc.....
你应该使用一个数组:
function createVariables(){
var accounts = [];
for (var i = 0; i <= 20; ++i) {
accounts[i] = "whatever";
}
return accounts;
}
然后您可以访问accounts[0]
through accounts[20]
。
我知道如何做到这一点的唯一方法是使用 JavaScripteval
函数。
就像是 eval("account" + 1 + "='some value'");
http://www.w3schools.com/jsref/jsref_eval.asp
但是,我认为@Domenic 有更好的答案。
我不确定是否要回答一个老问题,但是我在自己寻求答案时偶然发现了这个问题。
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 所述
您可以使用 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. :(