民间, 不确定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)
这可能吗?
答案 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';
(每条评论)