当我使用“var”定义它们时,变量不会变为零

时间:2014-01-29 04:19:06

标签: javascript

我有以下代码(ajax):

for(i in data.collection1) {
  var var1, var2, var3, var4 = 0;
  for (j in data.collection1[i].collection2) { // might be empty
    var current = data.collection1[i].collection2[j];
    if (current != 'undefined') {
      if (current.status == 'status1') var1 = current.count;
      if (current.status == 'status2') var2 = current.count;
      if (current.status == 'status3') var3 = current.count;
      if (current.status == 'status4') var4 = current.count;
    }
  }

  var str = $(["<tr>", "<td>", data.collection1[i].obj1.name,  "</td>",
    "<td>", var1,  "</td>",
    "<td>", var2,  "</td>",
    "<td>", var3,  "</td>",
    "<td>", var4,  "</td>", "</tr>"].join(""));

  $("#tbl1 tr:last").after(str);
}

奇怪的是,当data.collection1[i].collection2在某次迭代时为空 时,变量var1, var2, var3, var4不会等于zero,而是保持他们的先前的值(来自上一次迭代)。

为什么会这样,我怎么摆脱它?

P.S。顺便问一下,他们是否可以通过任何方式简化此代码?

1 个答案:

答案 0 :(得分:10)

var var1, var2, var3, var4 = 0;

声明表示

  

在本地范围内声明var1, var2, var3, var4变量,另外将var4值设置为0

如果要为其他变量设置值,请为每个变量设置= 0

var var1 = 0,
    var2 = 0,
    var3 = 0,
    var4 = 0;