这两个表达式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]
}
答案 0 :(得分:6)
for (var i = 0, item; item = a[i++];) {
// Do something with item
}
只要item
被赋予“真实”值,就告诉循环继续前进。每次迭代后,item
被分配给数组中的下一个项目。我们的想法是,一旦i
到达超出数组范围的点,将分配undefined
,并且循环将终止。
但是编写此代码的人应该被解雇,因为如果数组包含任何“falsy”值,循环也会终止:0,空字符串,false 好的,这段代码是由Mozilla人写的,他们比我聪明得多。请注意,如果数组包含任何“虚假”值,则循环将终止:0
,empty string
,false
亲眼看看:
var a = [1, 2, 3, 0, 5, 6];
for (var i = 0, item; item = a[i++]; ) {
alert(item);
}
请注意,循环在3之后终止,因为0是假的。