是否可以在for-loop中使用数组变量值作为新变量名(或者换句话说,等式的左侧可以由迭代中的预定义值确定)?
for (var i = 0; i < array.length; i++) {
// we all know this is possible:
blabla[i] = apple;
// but I'm wondering if there's a way we can achieve this:
example(someVar);
}
function example(name) {
// [name] = banana;
name = banana;
}
显然,我在上面的代码段中执行此操作的方式,值banana
始终被分配给变量name
。虽然我怎么能这样做但不太确定?
答案 0 :(得分:2)
变量是属性,可以是全局对象(在浏览器中:window
),也可以是某些其他对象。所以你可以这样做:
for (var i = 0; i < array.length; i++) {
window[array[i]] = '[something]';
}
或
var someObj = {};
for (var i = 0; i < array.length; i++) {
someObj[array[i]] = '[something]';
}
答案 1 :(得分:0)
function myVar(val) {
this.value=val;
}
var array=new Array( new myVar(1),new myVar(2),new myVar(3));
for (var i = 0; i < array.length; i++) {
example(array[i]);
alert(array[i].value); // now they are 0,0,0
}
function example(name) {
name.value = 0;
}