複習下Javascript 迴圈(Javascript Loop Statements)語句的相關知識。
在一般情況下,程式語句的執行是按照其書寫順序來執行的。前面的代碼先執行,後面的代碼後執行。但是這種簡單的自上而下的單向流程只適於用一些很簡單的程式。大多數情況下,需要根據邏輯判斷來決定程式碼執行的優先順序。要改變程式碼執行的先後順序,任何程式設計語言都需要用到條件陳述式和迴圈語句,Javascript 也不例外。
這一節我們主要介紹 Javascript 迴圈語句。
Javascript 迴圈語句有以下幾種:
- 在迴圈的開頭測試運算式 (while 迴圈語句)
- 在迴圈的末尾測試運算式 (do...while 迴圈語句)
- 對對象的每個屬性都進行操作 (for...in 迴圈語句)
- 由計數器控制的迴圈 (for 迴圈語句)
使用 for 迴圈語句
for 迴圈語句指定了一個計數器變數,一個測試條件,和更新計數器的行為。
每次迴圈重複之前,都要測試條件。如果測試成功,則執行迴圈內的代碼;如果測試不成功,則不執行迴圈內的代碼,而是執行緊跟在迴圈後的第一行代碼。當執行該迴圈時,計數器變數在下次重複迴圈前被更新。
如果迴圈條件一直不滿足,則永不執行該迴圈。如果條件一直滿足,則會導致無限迴圈。前一種,在某種情況下是需要的,但是後一種,基本不應發生,所以寫迴圈條件時一定要注意。
for 迴圈語句範例程式碼:
1 for (i = 0; i <= 5; i++)
2 {
3 document.write(i);
4 document.write("<br>");
5 }
使用 for...in 迴圈語句
Javascript 提供了一種特別的迴圈方式來遍曆一個對象的所有使用者定義的屬性或者一個數組的所有元素。for...in 迴圈中的迴圈計數器是一個字串,而不是數字。它包含了當前屬性的名稱或者表示當前數組元素的下標。
for...in 迴圈語句範例程式碼:
1 <script type="text/javascript">
2 // 建立一個對象 myObject 以及三個屬性 name, sex, age
3 var myObject = new Object();
4
5 myObject.name = "老三";
6 myObject.sex = "Male";
7 myObject.age = "23";
8
9 //遍曆對象的所有屬性
10 for (prop in myObject)
11 {
12 document.write("屬性 '" + prop + "' 為 " + myObject[prop]);
13 document.write("<br>");
14 }
15 </script>
使用 while 和 do...while 迴圈語句
while 迴圈和 for 迴圈類似。其不同之處在於, while 迴圈沒有內建的計數器或更新運算式。如果你希望控制語句或語句塊的迴圈執行,不只是通過 "運行該代碼 n 次"這樣簡單的規則,而是需要更複雜的規則,則應該用 while 迴圈。
注意:由於 while 迴圈沒有顯式的內建計數器變數,因此比其它類型的迴圈更容易產生無限迴圈。此外,由於不易發現迴圈條件是在何時何地被更新的,很容易編寫一個實際上從不更新條件的 while 迴圈。因此在編寫 while 迴圈時應特別小心。
while 迴圈語句範例程式碼:
1 i = 0
2 while (i <= 5)
3 {
4 document.write(i + "<br>");
5 i++;
6 }
在 JScript 中還有 do...while 迴圈與 while 迴圈相似,不同處在於它總是至少運行一次,因為是在迴圈的末尾檢查條件,而不是在開頭。
do...while 迴圈語句樣本:
1 i = 0;
2 do{
3 document.write( i + "<br>");
4 i++;
5 }while (i <= 5)
使用 break 和 continue 語句
在 Javascript 中,當某些條件得到滿足時,用 break 語句來中斷一個迴圈的運行。(請注意,也用 break 語句退出一個 switch 塊。參見 Javascript 條件陳述式)。如果是一個 for 或者 for...in 迴圈,在更新計數器變數時使用 continue 語句越過餘下的代碼塊而直接跳到迴圈的下一次重複中。
break 範例程式碼:
1 <html>
2 <head>
3 <title>一個用break中斷迴圈的Javascript範例程式碼</title>
4 <script type="text/javascript">
5 function BreakTest(breakpoint){
6 var i = 0;
7 var m = 0;
8 while (i < 100){
9 //當 i 等於breakpoint時,中斷迴圈
10 if (i == breakpoint)
11 break;
12 m=m + i;
13 i++;
14 }
15 return(m);
16 }
17 </script>
18 </head>
19 <body>
20 <script type="text/javascript">
21 //設函數BreakTest參數breakpoint值為23,得到從1加到22的合計。
22 document.write(BreakTest(23))
23 </script>
24 </body>
25 </html>
continue 範例程式碼:
1 //該script代碼用來輸出1到10之間的奇數。
2 var x ;
3 for (x=1; x<10; x++){
4 //如果x被2整除,則跳過後面代碼,開始下一次重複;
5 //如果x不能被2整除,則執行後面代碼,輸出 x 。
6 if (x%2==0)
7 continue;
8 document.write (x + "<br>");
9 }