迴圈指的是「重複做某件事,次數隨著數值『遞增」或『遞減』,當數值滿足所設的條件,則退出迴圈」。
所以當我們要「重複做某件事」的時候,第一個進入腦海中的方法應該就是迴圈。例如console.log(1)到(9)、求某數值範圍的平方或是九九乘法表之類的。
最常見的迴圈有 for 與 while 兩種。
for迴圈的語法如下:
for(var i = 0; i < n; i++ ){
/執行某件事
}
var i = 0; 是在設定初始值,變數i的有效範圍與for迴圈相同。
i < n; 則是在為for迴圈設定條件,變數i的有效範圍跟for迴圈的有效範圍是相同的,一旦變數i滿足這個條件,迴圈就會結束。如果還為滿足就去執行{}內的程式敘述。
i++; 則在迴圈跑完一次時遞增,直到迴圈結束。
讓我們來試試看99乘法表該如何利用迴圈來執行:
for (var = 1; i <= 9; i++) {
for (var j = 1; j <= 9; j++){
console.log( i * j);
}
}
while迴圈通常長成這個樣子:
var i = 0;
while (i < 10){
/執行某個程式敘述
i++;
}
var i = 0; 設定初始值。
(i < 10) 這定迴圈執行的條件。
i++;在{}的結尾處讓變數遞增或遞減,直到變數i滿足所設條件,結束迴圈。
讓我們試著用while迴圈來印出1~9的平方:
var i = 1;
while (i <= 9) {
console.log(i * i);
i++;
}
while迴圈最常見的疏忽就是忘了在結尾設定變數遞增(i++),結果造成條件一直無法滿足,於是無窮迴圈的一直執行下去。
那何時該用for迴圈?何時該用while迴圈呢?
在《0陷阱!0誤解!8天重新認識JavaS》一書中有提到:
「
」
讓我們利用for迴圈來選出大樂透的號碼,有1到49個號碼,要選出6個不重複號碼:
var lottery = [];
var n;
for (var i = 0; i < 6; i++){
n = Math.floor(Math.random() * 49) + 1;
if ( lottery.indexOf(n) === -1){
lottery.push(n);
}
}
49個號碼選出6個,執行次數6次,如果使用for迴圈,看起來就一目了然,是適合用for迴圈來執行的情境。