2011-04-02 92 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