iT邦幫忙

0

[快速入門前端 47] JavaScript:迴圈 (2) for 和 while 比較

  • 分享至 

  • xImage
  •  

for 和 while

其實 forwhile 最大的差異在於「是否知道要跑幾次」,在寫 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

while 結合 break

之前在介紹 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);

for 結合 if-else 判斷

範例:判斷某數是否為質數

  • 使用 prompt() 讓使用者輸入數字,並判斷是否為質數
  • 質數的定義為大於 1 且只能被 1 和該數本身整除的數字
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) 雙重迴圈
系列文章列表:[快速入門前端] 系列文章索引列表


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言