在 JavaScript 開發中,continue 語句是用於控制迴圈流程的關鍵工具。當程式執行到 continue 時,該次迴圈迭代中位於其後的程式碼將會被忽略,程式會直接進入下一次的迭代判斷。這對於過濾無效數據或跳過特定條件的處理邏輯非常實用。
continue 與 break 規格對照
在迴圈控制中,開發者常會混淆 continue 與 break 的用途,以下為兩者的核心差異對照:
| 特性 | continue | break |
|---|---|---|
| 執行行為 | 跳過當前迭代,進入下一次 | 立即終止整個迴圈執行 |
| 迴圈狀態 | 迴圈繼續執行 | 迴圈完全停止 |
| 適用場景 | 僅需略過特定條件的項目 | 找到目標或發生錯誤時停止 |
在 for 迴圈中的應用
在 for 迴圈中使用 continue,最常見的情境是過濾掉不需要處理的數值。當條件滿足時,透過 continue 略過後續的 console.log 輸出。
範例:使用 continue 篩選奇數
在此範例中,當變數 i 為偶數時,continue 會觸發,直接跳過後方的輸出指令。
for (let i = 1; i <= 10; i++) {
// 若 i 為偶數,跳過本次迭代
if (i % 2 === 0) {
continue;
}
console.log(i); // 僅輸出奇數
}
在 while 迴圈中的應用
在 while 迴圈中使用 continue 時,務必注意變數更新(如 num++)的位置。若 continue 寫在變數更新之前,可能會導致無窮迴圈。
範例:在 while 迴圈中跳過偶數
為了避免無窮迴圈,我們在執行 continue 之前,必須先手動增加變數值。
let num = 1;
while (num <= 10) {
if (num % 2 === 0) {
num++; // 必須先更新變數,否則會進入無窮迴圈
continue;
}
console.log(num); // 輸出奇數
num++;
}
嵌套迴圈與標籤語句 (Label)
預設情況下,continue 只會影響當前所在的內層迴圈。若需要跳過外層迴圈的迭代,則必須搭配「標籤語句 (Label)」來指定目標。
範例:使用 Label 跳過外層迴圈
透過 outerLoop 標籤,當內層條件滿足時,可以直接跳轉到外層迴圈的下一次迭代。
outerLoop: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) {
// 跳過外層迴圈的當前迭代
continue outerLoop;
}
console.log(`i = ${i}, j = ${j}`);
}
}
使用場景與建議
- 數據過濾:當處理陣列或物件集合時,若遇到無效資料(如
null或undefined),使用continue可以讓邏輯層次更清晰,避免過深的if-else巢狀結構。 - 提升可讀性:在複雜的業務邏輯中,將「排除條件」寫在函式或迴圈開頭,並配合
continue,能有效減少程式碼的縮排深度,提高維護性。
continue 語句是控制迴圈流向的基礎,靈活運用能讓你的程式碼邏輯更為精簡。在處理大量數據迭代時,適度使用此語法能有效提升程式碼的可讀性。
參考資料與延伸閱讀
- MDN Web Docs:JavaScript continue 語句語法與使用說明
- ECMAScript 語言規範:continue 語句執行語義 (ECMA-262)
- MDN Web Docs:JavaScript break 語句與 continue 的比較
- MDN Web Docs:JavaScript 標籤語句 (Labeled Statements) 說明
- ECMAScript 語言規範:Labeled Statements 執行語義 (ECMA-262)
- 延伸閱讀:js continue 語句用法
- 延伸閱讀:JavaScript 使用 String.fromCodePoint() 將 Unicode 轉字符
發表迴響