Javascript - 这行是做什么的?

时间:2010-02-12 15:39:40

标签: javascript loops

以下javascript做了什么?

var groups = countrylist.split(',');    
for( var i = -1, group;  group = groupsCounty[++i]; ){
  ...
}

5 个答案:

答案 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声明变量igroup。对于每次迭代,循环条件 group = groupsCounty[++i]将下一个数组值分配给group。如果该表达式是错误的(例如groupsCounty[++i]在超出范围时返回 undefined ),则循环停止。并且 final-expression 为空,因为{em> contition 表达式中i已经增加。

答案 4 :(得分:-1)

相当于

for (var group in groupsCounty) {
  ...
}

具有访问索引(i)的附加值。