这两个表达var i = 0, item; item = a[i++];是什么意思?
for (var i = 0, item; item = a[i++];) {
// Do something with item
}
Run Code Online (Sandbox Code Playgroud)
显然这是一个替代品
for (var i = 0; i < a.length; i++) {
// Do something with a[i]
}
Run Code Online (Sandbox Code Playgroud)
for (var i = 0, item; item = a[i++];) {
// Do something with item
}
Run Code Online (Sandbox Code Playgroud)
只要item被赋予"真实"的价值,就告诉循环继续前进.每次迭代后,item都会为数组中的下一个项目分配.这个想法是,一旦i达到超出数组范围的点,undefined将被分配,循环将终止.
但是编写这段代码的人应该被解雇,因为如果数组包含任何"falsy"值,循环也将终止:0,空字符串,false好,这段代码是由Mozilla人写的,而且它们比我更聪明.只是要注意,如果数组包含任何"falsy"值的循环将终止:0,empty string,false
亲眼看看:
var a = [1, 2, 3, 0, 5, 6];
for (var i = 0, item; item = a[i++]; ) {
alert(item);
}
Run Code Online (Sandbox Code Playgroud)
请注意,循环在3之后终止,因为0是假的.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |