我如何理解这个for循环?

时间:2011-04-02 14:37:49

标签: javascript

for (var part; parts.length && (part = parts.shift());) {}

我认为for循环只能是这样的:

for (var part = 0; i < that.length; part++) {}

那是什么意思?

4 个答案:

答案 0 :(得分:1)

for循环如下:

for (<declarations>; <!break_condition>; <after_each_iteration>)

最常见的是在第一个语句中看到计数器初始化,在否定的中断条件中看小于或大于条件,在最终语句中看到计数器递增。

但是,只要它们在语法上有效,这三个部分的内容都可以是任何内容。

有问题的循环遍历数组或对象parts的元素,删除这些元素。

答案 1 :(得分:0)

基本上你可以像这样重写一个for循环:

常见for循环使用示例:

for( var part = 0; i < that.length; part++) {}

重写为:

var part = 0;
while (i < that.length) {
// user code
part++;
}

在另一个案例中,它是相同的:

for (var part; parts.length && (part = parts.shift());) {}

重写为:

var part;
while (parts.length && (part = parts.shift())) {
// user code
// no post code
}

答案 2 :(得分:0)

阅读this可能会解释很多。

for (initial-expression; condition; final-expression) {
    // Block of code.
}

初始表达式在循环开始之前运行一次。

检查条件是否为真,如果为真,则运行最终表达式。

重复运行表达式(连同代码块),直到条件为假。

你可以在任何这些位置放置任何东西。

你甚至可以做for(;;) { },这被称为永久循环。

你也可以做一个纯粹的条件循环。

for (prop in object)是最常见的形式。

答案 3 :(得分:-1)

  
    

那是什么意思?

  

这意味着某人没有写出好的代码。

它本应该像....

while (parts.length > 0) 
{
  var parts = parts.shift();
  if (parts == null)
    break;
  ...