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

What does the syntax in this two expression for loop mean?

本文关键字:表达式 语法 是什么 意思 两个 循环      更新时间:2023-09-26

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]  
}  
for (var i = 0, item; item = a[i++];) {  
    // Do something with item  
} 

是告诉循环继续进行,只要item被分配了一个"truthy"值。在每次迭代之后,item被分配给数组中的下一个项。其思想是,一旦i到达超出数组边界的点,就会分配undefined,循环就会终止。

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

亲眼目睹:

var a = [1, 2, 3, 0, 5, 6];
for (var i = 0, item; item = a[i++]; ) {
    alert(item);
} 

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