这两个表达式for循环的语法是什么意思?

时间:2012-01-30 23:48:20

标签: javascript

这两个表达式var i = 0, item; item = a[i++];是什么意思?

for (var i = 0, item; item = a[i++];) {  
    // Do something with item  
}  

显然这是

的替代方案
for (var i = 0; i < a.length; i++) {  
    // Do something with a[i]  
}  

1 个答案:

答案 0 :(得分:6)

for (var i = 0, item; item = a[i++];) {  
    // Do something with item  
} 

只要item被赋予“真实”值,就告诉循环继续前进。每次迭代后,item被分配给数组中的下一个项目。我们的想法是,一旦i到达超出数组范围的点,将分配undefined,并且循环将终止。

但是编写此代码的人应该被解雇,因为如果数组包含任何“falsy”值,循环也会终止:0,空字符串,false 好的,这段代码是由Mozilla人写的,他们比我聪明得多。请注意,如果数组包含任何“虚假”值,则循环将终止:0empty stringfalse

亲眼看看:

var a = [1, 2, 3, 0, 5, 6];

for (var i = 0, item; item = a[i++]; ) {
    alert(item);
} 

请注意,循环在3之后终止,因为0是假的。