2012-06-30 123 views
11

MDN states:使用繼續在do-while循環

當您使用continue沒有標籤,它會終止最內層whiledo-whilefor語句的當前迭代,並繼續執行循環的下一個迭代。

我不確定爲什麼下面這段代碼不能像我所期望的那樣工作。

do { 
    continue; 
} while(false); 

即使while條件false,我希望它永遠運行,因爲continue跳朝塊,它會立即重新執行continue的啓動等但是不知怎的,一個迭代後循環終止。它看起來像continue被忽略。

continue如何在do-while循環工作?

+1

隱含滿足條件。如果條件不符合,則不會有下一次迭代。 – 2012-06-30 13:25:11

+1

我錯過了。我想我被源代碼的順序誤導了。 (我認爲'繼續'會在源代碼中「跳起來」)。 – pimvdb

+1

它*看起來就是這樣,特別是如果你使用語句標籤。 'TOP:do {continue TOP; } while(false)' – 2012-06-30 13:33:17

回答

7

看看這個的jsfiddle:http://jsfiddle.net/YdpJ2/3/

var getFalse = function() { 
    alert("Called getFalse!"); 
    return false; 
}; 

do { 
    continue; 
    alert("Past the continue? That's impossible."); 
} while(getFalse());​ 

這似乎打在繼續,再破的是迭代的運行檢驗條件。由於條件是錯誤的,它會終止。

2

繼續之後,將評估循環條件,因爲它是假的,循環將終止。

4

繼續停止執行塊中其餘代碼的執行並直接跳轉到循環的下一次迭代。

因爲你正在做的while(false)沒有下一次迭代

6

continue不跳過檢查while(false)但簡單地忽略括號內代碼的其餘部分。

4

continue不會從當前迭代開始,而是跳到下一個(如在MDN引用中所述)。

由於false條件,沒有下一次迭代 - 所以整個循環完成。

1

我希望它永遠運行,因爲繼續跳躍朝着 塊

continue不會跳轉到塊的開始,它跳躍到塊的末尾開始。