2011-04-02 111 views
2
for (var part; parts.length && (part = parts.shift());) {} 

我想到了一个for循环只能是这样的:我如何理解这个循环?

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

那么,是什么意思呢?

回答

0

this可能会解释很多。

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

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

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

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

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

你甚至可以做for(;;) { }这就是所谓的永久循环。

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

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

-1

那循环的等价去研究思维

每个部位做{}

+2

不完全,'部分'在问题的循环中被清空。 – Mat 2011-04-02 14:48:26

+0

true ..好点 – BugFinder 2011-04-02 14:57:57

1

一个for循环的样子:

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

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

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

所讨论的循环遍历数组或对象的元素parts,删除这些元素。与普通

举例循环使用:

+2

“有问题的循环等同于:for(var part in parts)'”**不,它不是!** – Eric 2011-04-02 14:49:59

+0

@Eric:阅读其余的句子。有一个“有区别的”附录。 – 2011-04-02 14:50:39

+0

还没有。 'for(var part in parts)'迭代**键,'(var part; parts.length &&(part = parts.shift());)'迭代**值**。 – Eric 2011-04-02 14:53:59

0

基本上你可以重写一个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 
} 
-1

那么,是什么意思呢?

这意味着有人不写好代码。

它应该是类似....

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

,它不回答问题,而且完全是主观的。 – Mat 2011-04-02 14:59:43