其實 for
和 while
最大的差異在於「是否知道要跑幾次」,在寫 for
迴圈時,我們必須在一開始就設定好條件和變數變化;而 while
中只需要寫迴圈的條件。所以當我們不知道需要執行幾次時,就可以使用 while 迴圈
配合 if-else
條件判斷,例如當我們需要搶高鐵票時可以這樣寫:
let haveTicket = false; // 預設沒有票
while(haveTicket == false) { // 當沒有票時會不斷嘗試搶票
// 執行搶票
if (有票) {
haveTicket = true; // 當買到票時將變數改為 true,停止迴圈
}
}
或我們也可以使用 while
進行數學運算,例如算出 1 + n 加到多少時最靠近 100:
let sum = 0;
let count = 0;
while (sum+count <= 100) { // 條件為目前總和 + 變數小於 100
count++; // 初始變數為 0,所以先 + 1
sum += count; // 將變數加到總合中
}
console.log(sum); // 最後總和為 91
console.log(count); // count 為 14,但加了 14 後會超過 100,所以最終答案為 13
之前在介紹 switch
條件判斷時我們有說到 break
可以用來跳出該區塊,而在 while
中也同樣能夠使用 break
去結束迴圈。
範例:
從 1 加到 n,直到超過 100
let sum = 0; // 預設總和為 0
let num = 1; // 從 1 開始跑迴圈
while (true) { // 先將條件設定為 true,會不斷跑迴圈
if (sum < 100) {
sum += num;
num++;
}
else {
break;
}
}
console.log(sum);
console.log(num);
範例:判斷某數是否為質數
prompt()
讓使用者輸入數字,並判斷是否為質數let input = prompt("請輸入入字");
if (input > 1) {
// 判斷是否質數,需要將該數字與 2 到 (該數字-1) 運算一遍看看是否整除,若都不整除則此數為質數
// 在跑迴圈時需要先設一個變數來存取是不是質數
let output = true; // 預設是質數
for (let i = 2; i < input; i++) {
if (input % i == 0) {
// input % i == 0 成立代表它可以被某數整除,代表它不是質數
output = false; // 不是質數,改變變數的值
break; // 只要有一個數可以被整除就不是質數了,所以可以直接跳出迴圈不用檢查其他的
}
};
// 跑完迴圈後可以檢查變數 output 的值,若為 true 表示為質數
if (output == true) {
alert("是質數");
}
else {
alert("不是質數");
}
}
else {
alert("小於 1 沒辦法判斷啦");
}
上一篇:[快速入門前端 46] JavaScript:迴圈 (1) for 、while、do while 簡介
下一篇:[快速入門前端 48] JavaScript:迴圈 (3) 雙重迴圈
系列文章列表:[快速入門前端] 系列文章索引列表