คำสั่ง break และ continue ECMAScript

คำสั่ง break และ continue ให้การควบคุมการทำงานของรหัสในวนลูกค์เรียบร้อยขึ้น

ความแตกต่างระหว่างคำสั่ง break และ continue

คำสั่ง break จะออกจากวนลูกค์ทันที และหยุดทำงานวนลูกค์อีกครั้ง

คำสั่ง continue และกลับมาวนลูกค์ใหม่โดยอนุญาตให้วนลูกค์ทำงานต่อไป

ตัวอย่างเช่น:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	//แสดง "4"

ในรหัสบทดังกล่าว for วนลูกค์จาก 1 ถึง 10 วนลูกค์ตัวแปร i ในระหว่างวนลูกค์ if จะตรวจสอบค่า i ว่าสามารถหารด้วย 5 หรือไม่ ถ้าสามารถหารด้วย 5 จะทำคำสั่ง break ซึ่งแสดง alert "4" ซึ่งเป็นจำนวนครั้งที่วนลูกค์ทำงานก่อนที่จะออกจากวนลูกค์

ถ้าใช้คำสั่ง continue แทนคำสั่ง break ในตัวอย่างนี้ ผลลัพธ์จะต่างออกไป:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	//แสดง "8"

ที่นี่ alert จะแสดง "8" ซึ่งเป็นจำนวนครั้งที่วนลูกค์ทำงาน อาจจะทำวนลูกค์ทั้งหมด 9 แต่เมื่อค่า i คือ 5 จะทำคำสั่ง continue ซึ่งทำให้วนลูกค์กระทบข้ามแสดงที่ iNum++ และกลับไปที่จุดเริ่มต้นของวนลูกค์

ใช้ร่วมกับ labeled

คำสั่ง break และ continue สามารถใช้ร่วมกับ labeled ซึ่งหมายถึงสถานที่เฉพาะในรหัส

โดยทั่วไปแล้ว ในกรณีที่วงลูปภายในมีวงลูป จะทำเช่นนี้ ตัวอย่าง:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}
alert(iNum);	// ออก "55"

ในตัวอย่างที่ผ่านมา หมายเลข labeled outermost หมายถึงคำสั่ง for ภายนอก ธรรมดาแล้ว ในทุกคำสั่ง for จะทำงาน 10 ครั้ง ซึ่งหมายความว่า iNum++ จะทำงาน 100 ครั้ง หลังจากที่ทำงานเสร็จ ค่า iNum ควรเท่ากับ 100 ในกรณีนี้ คำสั่ง break มีตัวเลขเพิ่มเติม ซึ่งหมายถึงหมายเลขแสดงสถานที่ที่ต้องการกระทำการกระทบหลังจากหยุดวงลูป ดังนั้น คำสั่ง break ไม่เพียงแค่ข้ามวงลูป for ภายใน (หรือใช้ตัวแปร j) แต่ยังข้ามวงลูป for ภายนอก (หรือใช้ตัวแปร i) ด้วย ดังนั้น ค่า iNum ที่สุดท้ายเท่ากับ 55 ตรงที่ค่า i และ j ต่างเท่ากับ 5 วงลูปจะหยุด

สามารถใช้คำสั่ง continue ด้วยวิธีเดียวกัน:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}
alert(iNum);	// ออก "95"

ในตัวอย่างที่ผ่านมา คำสั่ง continue จะบังคับให้วงลูปยืดยาวต่อไป ไม่เพียงวงลูปภายใน แต่ยังรวมถึงวงลูปนอกอีกด้วย ในกรณีที่ j เท่ากับ 5 มันหมายความว่าวงลูปภายในจะลดช่วงเวลาเรียกใช้ 5 ครั้ง ทำให้ค่า iNum มีค่า 95

คำแนะนำ:สามารถเห็นได้ว่า คำสั่ง labeled ที่ใช้ร่วมกับ break และ continue มีความแข็งแกร่งมาก แต่การใช้เกินไปอาจทำให้มีปัญหาในการดัดแปลงรหัส ต้องทำให้ตราหน้าที่ใช้มีความชัดเจน และไม่มีการฝังหลายชั้นรอบๆ กัน

คำแนะนำ:ต้องการรู้ว่าสำนักงานหมายความอะไร โปรดอ่าน คำสั่ง label ECMAScript บทบาทนี้