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

การใช้ Break Statement ออกจาก Loop ใน JavaScript


คำสั่ง break ใช้เพื่อ ออกจากลูปทันที และทำคำสั่งถัดไปหลังลูปต่อไป

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

<!DOCTYPE html>
<html>
<body>
  <p id="test"></p>
  <script>
    var text = "";
    var i;
    for (i = 0; i < 5; i++) {
      if (i === 2) {
        break; // ออกจากลูปเมื่อ i = 2
      }
      text += "Value: " + i + "<br>";
    }
    document.getElementById("test").innerHTML = text;
  </script>
</body>
</html>

ผลลัพธ์

Value: 0
Value: 1

ลูปหยุดที่ i=2 (ไม่รัน i=2,3,4) เพราะ break ทำงานเมื่อ i===2

การทำงานใน Loop ต่างๆ

Loop TypeBreak Behavior
forออกจากลูปทันที Iteration Statement ไม่ทำงาน
whileออกจากลูปทันที Condition ไม่ถูกตรวจสอบอีก
do...whileออกจากลูปทันที Condition ไม่ถูกตรวจสอบ
for...ofออกจากลูปทันที
for...inออกจากลูปทันที
forEachไม่สามารถใช้ break ได้ (ต้อง throw หรือใช้ for...of)

Break ใน Switch Statement

ใน switch ใช้ break เพื่อป้องกัน Fall-through:

switch (grade) {
  case 'A':
    console.log('Excellent');
    break; // หยุดที่นี่ ไม่ไป case B
  case 'B':
    console.log('Good');
    break;
  default:
    console.log('Unknown');
}

Break กับ Nested Loops

break ปกติออกจากลูปชั้นในสุดเท่านั้น ใช้ Label เพื่อออกจากลูปชั้นนอก:

outer: for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    if (i === 1 && j === 1) break outer; // ออกจากทั้งสองลูป
    console.log(i, j);
  }
}
// ผลลัพธ์: (0,0) (0,1) (0,2) (1,0) → หยุดที่ (1,1)

ข้อควรระวัง

  • โค้ดหลัง break ในบล็อกเดียวกันจะเป็น Unreachable
  • ใน forEach, map, filter ไม่มี break → ใช้ for...of แทน
  • ใช้ Label อย่างระมัดระวัง (ดูบทความ Label Statement)

ตัวเลือกที่ดีกว่า (Functional Style)

// แทน for + break
const found = items.find(item => item.id === targetId);

// แทน while + break
const index = items.findIndex(item => condition(item));
if (index !== -1) { /* found */ }