在for循环中创建变量名称js不起作用

时间:2017-10-26 20:38:04

标签: javascript for-loop

我正在做以下事情:

var var1 = 58;

for(var i=0;i<10;i++){
 if(("var"+i) == 58) {
 console.log("they are equal");
 }
}

有人可以解释一下为什么(“var”+ i)没有得到值58吗?

我知道第一个是变量,也许第二个只是一个字符串,是吗?有没有办法使这项工作?

我知道我可能会问许多很明显的事情,但我刚开始。任何帮助赞赏! :)

3 个答案:

答案 0 :(得分:2)

您应该使用对象:

var data = {
  var1: 58
};

for(var i = 0; i < 10; i++){
 if(data["var" + i] == 58) {
   console.log("they are equal");
 }
}

UPD:@Alex suggested变种window而不是data,可以视为全局对象。它适用于浏览器,但您应该知道“没有适用于窗口对象的公共标准”(MDN)。

答案 1 :(得分:1)

var var1 = 58;

for(var i=0 ;i<10;i++){
    if(window["var"+i] === 58) {
         console.log("they are equal");
    }
 }

答案 2 :(得分:0)

dhilt的答案可能更好,但也许你没有能力改变另一个变量。

&#13;
&#13;
var var1 = 58;

for (var i = 0; i < 10; i++) {
  var cur;
  try {
    cur = eval('var' + i);
  } catch (error) {
    cur = null;
  }
  if (cur === 58) {
    console.log("they are equal");
  }
}
&#13;
&#13;
&#13;