我有以下代码(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。顺便问一下,他们是否可以通过任何方式简化此代码?
答案 0 :(得分:10)
var var1, var2, var3, var4 = 0;
声明表示
在本地范围内声明
var1, var2, var3, var4
变量,另外将var4
值设置为0
如果要为其他变量设置值,请为每个变量设置= 0
:
var var1 = 0,
var2 = 0,
var3 = 0,
var4 = 0;