【问题标题】:Can a variable name determined by array value in a for-loop? [duplicate]变量名可以由for循环中的数组值确定吗? [复制]
【发布时间】:2013-06-24 06:20:11
【问题描述】:

是否可以在 for 循环中使用数组变量值作为新变量名(或者换句话说,等式的左侧是否可以由迭代中的预定义值确定)?

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;
}

显然,我在上面的 sn-p 中执行此操作的方式,总是将值 banana 分配给变量 name。不太确定我该怎么做?

【问题讨论】:

  • 请说明您真正想要实现的目标。从您的示例中不清楚。将随机变量 (banana) 分配给函数中的局部变量 (name) 有什么意义?什么是 someVar(您为 bananasomeVar 提供零上下文)。
  • 也许我应该以不同的方式问这个问题。基本上我想要的是能够做类似eval(someVar) = someValue 的事情。那可能吗? @jahroy
  • 这没有意义。您应该在赋值语句的左侧有一个变量。不过,看起来你已经明白了。

标签: javascript function variables for-loop


【解决方案1】:

变量是全局对象(在浏览器中: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]';
}

【讨论】:

  • 谢谢!我在找这个。
【解决方案2】:
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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2018-02-10
    • 2020-02-05
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多