คำสั่ง break และ continue ECMAScript
- หน้าก่อน คำสั่ง break
- หน้าต่อไป คำสั่ง with
คำสั่ง 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 บทบาทนี้
- หน้าก่อน คำสั่ง break
- หน้าต่อไป คำสั่ง with