怎麽選擇使用 While Loop 還是 For Loop - paulip114/blog GitHub Wiki
while
loop 跟 for
loop` 都可以用來重複執行某段程式碼,但它們的使用場景和寫法其實有一些明確的差別與慣例,選對更容易讓你的程式碼清楚又好維護。
1. 快速對比:for vs while
特點 | for loop |
while loop |
---|---|---|
適合什麼? | 次數明確、有「起始值 → 結束值」的情況 | 條件驅動、不確定重複幾次 |
語法上有什麼特點? | 初始化、條件、更新 都在一行寫完 | 只有條件在 while 內 |
是否常用 break/continue | 通常較少 | 較常見,用來控制流程 |
看起來像什麼? | 像是「數數」、「跑 i = 0 到 100」 | 像是「一直做,直到某件事發生」 |
for
loop 的情境
2. 使用 🔁 明確知道要跑幾次
// 跑 10 次
for (let i = 0; i < 10; i++) {
console.log(i);
}
📋 對陣列或字串做固定次數操作
const nums = [1, 2, 3];
for (let i = 0; i < nums.length; i++) {
console.log(nums[i]);
}
for...of
/ for...in
更語意化
✅ 小技巧:也可以用 - 針對 array 做 iterate 就用
for...of
- 針對 object 做 iterate 就用
for...in
for (const num of nums) {
console.log(num);
}
for (const item in obj) {
console.log(item);
}
- 如果同時取得索引
index
和值value
,可以使用Array.prototype.entries()
方法
for (const [index, value] of nums.entries()) {
console.log(index, value);
}
while
loop 的情境
3. 使用 🌀 不確定要跑幾次,要等某個條件「變成 false」
let connected = true;
while (connected) {
// 嘗試接收資料,直到斷線
connected = checkConnection();
}
⏳ 等使用者輸入正確
let input;
while (input !== "yes") {
input = prompt("Say yes to continue:");
}
🎲 模擬事件(如骰子、遊戲迴圈)
let roll;
while (roll !== 6) {
roll = Math.ceil(Math.random() * 6);
console.log("Rolled:", roll);
}
4. 什麼時候選錯會出問題?
-
用
while
寫明確次數 → 更容易忘記更新條件導致無限迴圈let i = 0; while (i < 10) { console.log(i); // 忘記 i++ 會卡住! }
-
用
for
做條件控制 → 會讓讀者搞不清「為什麼用 for?」for (; connected;) { // 🤔 這樣寫太繞,其實該用 while }
5. 簡單判斷法(實用!)
問題 | 用法 |
---|---|
我知道要執行幾次嗎? | ✅ 用 for |
我只是要「重複直到某件事發生」嗎? | ✅ 用 while |
是「遍歷陣列 / 資料結構」嗎? | ✅ 用 for 或 for...of |
是「模擬事件 / 監聽狀態 / 等待反應」嗎? | ✅ 用 while |
需要進階控制流程(break / continue )嗎? |
多半都可以,但 while 比較常用 |
do...while
也可以用
6. 延伸:如果你要「至少執行一次」然後再檢查條件,可以用這個:
let input: string;
do {
input = prompt("Enter your name:");
} while (!input);
7. 總結一句話:
🪜 用 for
處理“我知道要跑幾次”的情況,用 while
處理“我不知道跑幾次”的情況。