javascript,for循环定义了一个动态变量名

时间:2013-12-31 22:21:24

标签: javascript

民间,   不确定eval()或window()是否是答案,但我试图循环遍历数组,并动态地为该数组中的每个项创建变量。

我的myArray看起来像:

['foo','bar','baz']

代码:

for (var i = myArray.length - 1; i >= 0; i--) {
   var myVar = eval(myArray[i])
};

console.log(foo)
console.log(bar)
console.log(baz)

这可能吗?

2 个答案:

答案 0 :(得分:2)

我认为你可以通过在对象中创建参数来实现吗?

var myObject = {};
for(var i=0;i<myArray.length;i++) {
    myObject[ myArray[i] ];
}

如果你没有将它们设置为任何东西,你将只有一个带有一些未定义参数的对象。我必须自己写这个以确定。

答案 1 :(得分:1)

您不能创建不同的&#34;变量名称&#34;但您可以创建不同的对象属性。有许多方法可以做任何你真正想要完成的事情。在你的情况下我会做

for (var i = myArray.length - 1; i >= 0; i--) {
   console.log(eval(myArray[i]));
};

更一般地说,您可以动态创建对象属性,这是您正在考虑的灵活性类型。

var result = {};
for (var i = myArray.length - 1; i >= 0; i--) {
    result[myArray[i]] = eval(myArray[i]);  
};

由于我实际上并不理解语言理论,所以我有点小手,但在纯Javascript(包括Node)中,引用(即变量名称)发生在比运行时更高的层次。更像是在调用堆栈;你当然不能像生产对象或数组一样在你的代码中制作它们。浏览器实际上让你无论如何都可以通过可怕的练习来做到这一点,通过

window['myVarName'] = 'namingCollisionsAreFun'; 

(每条评论)