Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

คำสั่ง continue ใน JavaScript คืออะไร?


คำสั่ง continue ใช้เพื่อ ข้ามโค้ดที่เหลือในรอบลูปปัจจุบัน ไปเริ่มรอบถัดไปทันที ต่างจาก break ที่ออกจากลูปสิ้นสุด

การทำงาน

  1. เจอ continue ในบล็อกลูป
  2. ข้ามคำสั่งที่เหลือในรอบนี้
  3. กระโดดไป Condition Check ของลูปทันที
  4. ถ้าเงื่อนไขยัง true → รันรอบใหม่ | false → ออกจากลูป

ตัวอย่างโค้ด

<html>
<body>
  <script>
    var x = 1;
    document.write("Entering the loop <br />");
    while (x < 10) {
      x = x + 1;
      if (x == 5) {
        continue; // ข้ามการพิมพ์ 5
      }
      document.write(x + "<br />");
    }
    document.write("Exiting the loop!<br />");
  </script>
</body>
</html>

ผลลัพธ์

Entering the loop
2
3
4
6
7
8
9
10
Exiting the loop!

สังเกต: เลข 5 หายไป (ถูก continue ข้าม) แต่ลูปทำงานต่อจนครบ 10

continue ใน for Loop

for (let i = 0; i < 10; i++) {
  if (i % 2 === 0) continue; // ข้ามเลขคู่
  console.log(i); // 1, 3, 5, 7, 9
}

// ตัวแปร i ยังเพิ่มขึ้นปกติ (Iteration Statement ยังทำงาน)
for (let i = 0; i < 5; i++) {
  if (i === 2) continue;
  console.log(i); // 0, 1, 3, 4
  // i++ ยังทำงานหลัง continue
}

continue ใน Nested Loops

continue ทำงานกับลูปชั้นในสุด (Innermost) เท่านั้น ใช้ Label เพื่อควบคุมลูปชั้นนอก:

outer: for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    if (j === 1) continue outer; // ข้ามรอบ outer ที่เหลือ ไปรอบ i ถัดไป
    console.log(i, j);
  }
}
// ผลลัพธ์: (0,0), (1,0), (2,0)

break vs continue สรุป

คำสั่งคำอธิบายใช้เมื่อไหร่
breakออกจากลูปสิ้นสุดพบสิ่งที่ต้องการ / Error / หยุดประมวลผล
continueข้ามรอบนี้ ไปรอบถัดไปกรองข้อมูล / Skip Invalid / Filter

แนวทางปฏิบัติที่ดี

  • ใช้ continue ต้นบล็อก (Guard Clause) เพื่อลด Nesting
  • หลีกเลี่ยง continue ในลูปซ้อนลึก (ใช้ Label หรือ Refactor)
  • พิจารณา filter() / forEach() แทนลูปพร้อม continue

ตัวอย่าง Guard Clause Pattern

// ❌ ซ้อนลึก
for (const user of users) {
  if (user.active) {
    if (user.hasPermission) {
      if (user.verified) {
        process(user);
      }
    }
  }
}

// ✅ Guard Clause ด้วย continue
for (const user of users) {
  if (!user.active) continue;
  if (!user.hasPermission) continue;
  if (!user.verified) continue;
  process(user); // ระดับซ้ายสุด อ่านง่าย
}