以下javascript做了什么?
var groups = countrylist.split(',');
for( var i = -1, group; group = groupsCounty[++i]; ){
...
}
答案 0 :(得分:11)
With i starting at -1
increase i by 1
get the ith element from the groupsCounty array
if there is no such element: stop
otherwise: assign it to group and carry on (with whatever "…" is)
这是以下的优化版本:
for (var i = 0; i < groupsCounty.length; i++; ){
var group = groupsCounty[i];
…
}
答案 1 :(得分:2)
它使用组中的值作为保护条件来迭代组的元素。即使用JavaScript Truthiness来控制循环迭代的次数,因为当没有可分配给它的值时,guard将为false。
答案 2 :(得分:2)
它这样做: -
var groups = countrylist.split(',');
for( var i = 0; i < groups.length; i++ )
{
var group = groups[i]
...
}
唯一真正的区别在于上述内容更为常见,更容易识别。你不会发布上面的代码询问“这是做什么的?”。
您发布的代码是一个聪明的开发但不一定是良好的编码实践的例子。
答案 3 :(得分:1)
for
loop遍历groups
数组,直到groupsCounty[++i]
返回错误值。
使用以下术语:
for (<initial-expression>; <condition>; <final-expression>)
initial-expression var i = -1, group
声明变量i
和group
。对于每次迭代,循环条件 group = groupsCounty[++i]
将下一个数组值分配给group
。如果该表达式是错误的(例如groupsCounty[++i]
在超出范围时返回 undefined ),则循环停止。并且 final-expression 为空,因为{em> contition 表达式中i
已经增加。
答案 4 :(得分:-1)
相当于
for (var group in groupsCounty) {
...
}
具有访问索引(i
)的附加值。