每當我想到使用while loop
,我不明白爲什麼我不能只使用if statement
來代替。我知道一個while循環運行'while'給定的語句是真實的,但是如果條件瞬間在塊內部終止,那麼我就無法想象任何事情發生。如果任何人都可以給我舉例說明如何/爲什麼我應該使用while loop
。這將非常感激。while語句有什麼好用處?
回答
我會試着給你一個非常高層次的答案,因爲我認爲直觀地理解它會更容易。
將所有算法都視爲食譜。一個典型的配方可能有一個看上去像部分如下:
- 如果花生具有殼,它從殼
- 分離將雞蛋打散,直到它被鞭打和氣泡
- 取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
}
+1非常好的插圖,顯示三者之間的區別和正確用法 – momo
這真的可以幫助我可視化一個while循環實際上在做什麼。謝謝! – 0x499602D2
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
的更好的用例是迭代量不是靜態的(已知)和/或您正在等待事件發生以打破循環。
A while
循環將執行一遍又一遍只要滿足條件,就是如果條件永不改變,它將進入無窮大。
的if
將執行一次當條件滿足
***如果循環*** ....真的..? – jondavidjohn
哈哈,我陷入了思考'for'循環的問題。修正了我的措辭,但並沒有改變我的答案。 –
while
將繼續運行,直到條件爲假。
如果條件在塊的末尾仍然爲真,則循環將重新運行。
if
只會運行一次。
那麼if statement
不會迴環繞。它只會發生一次,除非你把它放在一個循環中。一個while statement
將發生不止一次,只要聲明仍然如此。
如果你想創建一個無限循環while循環會做的伎倆
var done=false;
while(!done){
alert("I am annoying");
}
的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
完全不同,並解決了其他問題。
- 1. Assert語句有什麼好處?
- 2. 我的「while」語句有什麼問題
- 3. 在Python中使用'with .. as'語句有什麼好處?
- 4. while(condition){// work}`和`do {// work} while(condition)`有什麼好處?
- 5. 在T-Sql插入語句中使用Row Constructor語法有什麼好處?
- 6. 爲什麼不讀while語句?
- 7. PHP while while語句中的語句?
- 8. 這是什麼模式/成語?有什麼好處?
- 9. (;;){}或while(true){}有什麼更好?
- 10. 與while循環中的open語句有什麼不對嗎
- 11. 什麼是處理多個if/else語句的更好方法?
- 12. mysqli準備好的語句是什麼?
- 13. 哪個LINQ語句更好,爲什麼?
- 14. 使用準備好的語句有什麼限制?
- 15. While語句
- 16. 元組有什麼好處?
- 17. StringBuilders有什麼好處?
- 18. 粘液有什麼好處?
- 19. AJAX有什麼好處?
- 20. 「svn:externals」有什麼好處?
- 21. Cakephp,它有什麼好處?
- 22. cURL有什麼好處?
- 23. ConcurrentSkipListMap有什麼好處?
- 24. VS2010 SP1有什麼好處?
- 25. AnkhSVN有什麼好處?
- 26. JRebel有什麼好處?
- 27. WTP有什麼好處
- 28. 反射有什麼好處?
- 29. Assert() - 它有什麼好處?
- 30. Boost IPC有什麼好處?
我不知道如何'if'語句可以接近老實替換'while'循環:? – Loktar
@Loktar:轉到? :) –
我的不好,它似乎並不存在於JavaScript中。 –