| الكلمة | التأثير |
|---|---|
| break | يوقف الحلقة بالكامل ويخرج منها |
| continue | يتخطى التكرار الحالي وينتقل للتالي |
break وcontinue هما كلمتان مفتاحيتان تمنحانك تحكماً دقيقاً في سلوك الحلقات التكرارية أثناء تنفيذها. break تُوقف الحلقة بالكامل فوراً وتخرج منها نهائياً، بغض النظر عن باقي التكرارات المتبقية — مفيدة جداً عندما تجد ما تبحث عنه ولا داعي للاستمرار في الفحص.
continue على النقيض من ذلك، لا تُوقف الحلقة بالكامل، بل تتخطى التكرار الحالي فقط وتنتقل مباشرة للتكرار التالي، متجاهلة أي كود متبقٍ بعدها في نفس الدورة. تُستخدم لتجاوز حالات معينة دون كسر الحلقة كلها.
كلا الكلمتين تعملان مع جميع أنواع الحلقات (for, while, do...while, for...of, for...in)، ويمكن استخدامهما داخل جملة switch أيضاً (break فقط في هذه الحالة لإيقاف Fall-through كما رأينا سابقاً).
في الحلقات المتداخلة (حلقة داخل حلقة أخرى)، break وcontinue يؤثران فقط على الحلقة الأقرب المُحيطة بهما مباشرة، وليس على الحلقة الخارجية. لتجاوز هذا القيد والتحكم في حلقة خارجية من داخل حلقة داخلية، تستخدم جافاسكريبت ما يُسمى بـ "Labeled Statements" — تسمية الحلقة الخارجية باسم، ثم استخدام break اسم_التسمية للخروج منها مباشرة حتى من داخل الحلقة الداخلية.
| 1 | for (let i = 0; i < 10; i++) { |
| 2 | if (i === 5) break; // يوقف الحلقة تماماً عند 5 |
| 3 | if (i % 2 === 0) continue; // يتخطى الأرقام الزوجية |
| 4 | console.log(i); |
| 5 | } |
مثال 1: استخدام break للتوقف عند الإيجاد
| 1 | // البحث عن أول رقم قابل للقسمة على 7 ثم التوقف |
| 2 | const أرقام = [3, 8, 14, 21, 30]; |
| 3 | let الناتج; |
| 4 | for (const رقم of أرقام) { |
| 5 | if (رقم % 7 === 0) { |
| 6 | الناتج = رقم; |
| 7 | break; // توقف فور الإيجاد |
| 8 | } |
| 9 | } |
| 10 | console.log(الناتج); // 14 |
مثال 2: استخدام continue لتخطي حالات معينة
| 1 | // تخطي القيم السالبة وجمع الموجبة فقط |
| 2 | const قيم = [5, -3, 8, -1, 12]; |
| 3 | let المجموع = 0; |
| 4 | for (const قيمة of قيم) { |
| 5 | if (قيمة < 0) continue; // تخطَّ السالب |
| 6 | المجموع += قيمة; |
| 7 | } |
| 8 | console.log(المجموع); // 25 |