2011-08-31 77 views
-1

每當我想到使用while loop,我不明白爲什麼我不能只使用if statement來代替。我知道一個while循環運行'while'給定的語句是真實的,但是如果條件瞬間在塊內部終止,那麼我就無法想象任何事情發生。如果任何人都可以給我舉例說明如何/爲什麼我應該使用while loop。這將非常感激。while語句有什麼好用處?

+2

我不知道如何'if'語句可以接近老實替換'while'循環:? – Loktar

+1

@Loktar:轉到? :) –

+0

我的不好,它似乎並不存在於JavaScript中。 –

回答

7

我會試着給你一個非常高層次的答案,因爲我認爲直觀地理解它會更容易。

將所有算法都視爲食譜。一個典型的配方可能有一個看上去像部分如下:

  • 如果花生具有殼,它從殼
  • 分離將雞蛋打散,直到它被鞭打和氣泡
  • 取5分蔥,切碎他們每個人都在一半

這些類型的方向你有不同的方式做任務。

第一個實際上是一個「if」語句。如果條件(花生有殼)是真的,你可以做點什麼。你從字面上做:

if (not shelled) { 
    shell the peanut! // happens once 
} 

第二個是一個while循環。你擊敗了雞蛋它沒有鞭打和起泡。你不斷地做同樣的事情(鞭)),當你這樣做的時候你會看着它(一遍又一遍地)來檢查它是否變得非常有活力。一旦它變得起泡和足夠鞭打,你就停下來。當你停下來是因爲你已經通過你的「時間」條件。需要注意的一件重要的事情是,在你開始之前,你不一定知道一個雞蛋需要多少次「鞭打」才能使它產生鞭打。你只需要做很多次,並多次檢查(用你的眼睛)。你從字面上做:

while(not whipped enough) { 
    beat egg! // happens over and over 
} 

就像在食譜,你不希望有人做了一定的動作,直到時間的盡頭,所以你必須始終確保您的while循環,有理智的停止條件。大多數while循環取決於循環內部的某些變化,並在該變化足夠時停止。


第三個配方示例是for循環。對於每個洋蔥你有(5)你對那個洋蔥做了一次。你從字面上做:

for (onions 1 to 5) { 
    Chop an onion! // done 5 times total, once per onion 
} 
+0

+1非常好的插圖,顯示三者之間的區別和正確用法 – momo

+0

這真的可以幫助我可視化一個while循環實際上在做什麼。謝謝! – 0x499602D2

2

while是一個循環結構,而不僅僅是if

var i = 0; 

while (i < 10) { 
    //this stuff will happen until 
    //i < 10 

    // usually you iterate the counter so it 
    // eventually breaks the loop because 
    // i < 10 is no longer true 
    i++; 
} 

這樣做同樣的事情,因爲這

for (var i = 0; i < 10; i++) { 
    //this stuff will happen until 
    //i < 10 
} 

良好的用例的另一種形式,而

一般爲當需要發生迭代次數已知時,使用循環,所以通常當迭代數組時,您知道數組for的長度是一個不錯的選擇,因爲您可以明確設置迭代次數。

while的更好的用例是迭代量不是靜態的(已知)和/或您正在等待事件發生以打破循環。

1

A while循環將執行一遍又一遍只要滿足條件,就是如果條件永不改變,它將進入無窮大。

if將執行一次當條件滿足

+2

***如果循環*** ....真的..? – jondavidjohn

+0

哈哈,我陷入了思考'for'循環的問題。修正了我的措辭,但並沒有改變我的答案。 –

1

while將繼續運行,直到條件爲假。
如果條件在塊的末尾仍然爲真,則循環將重新運行。

if只會運行一次。

1

那麼if statement不會迴環繞。它只會發生一次,除非你把它放在一個循環中。一個while statement將發生不止一次,只要聲明仍然如此。

0

如果你想創建一個無限循環while循環會做的伎倆

var done=false; 
while(!done){ 
    alert("I am annoying"); 
} 
0

for語句可以用while來模擬:

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

// is the same as 

var i=0; 
while(i<length) { 
    // stuff 
    i++; 
} 

它也用於像循環:

while(true) { 
    // stuff... (like waiting for user input, analyzing some data until 
    // it hits a brick wall and needs to quit) 
    if(some_condition) { 
     break; 
    } 
} 

或其他東西:

while(a != b) { 
    if(a > b) { 
     a -= b; 
    } else { 
     b -= a; 
    } 
} // find the GCD of a and b 

正如您所看到的,它與if完全不同,並解決了其他問題。