انتقل إلى محتوى الدرس
الدرس 40
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

التحكم في الحلقات بـ break وcontinue في JavaScriptJavaScript break and continue Statements طريقة إنهاء الحلقة بالأمر break، وتخطي الدورة الحالية continue، وتنقية المدخلات أثناء التكرار

تحكم في مسار حلقات JavaScript عبر break وcontinue: الخروج المبكر عند التطابق، تخطي المدخلات غير الصالحة، ونطاق الحلقات المتداخلة واللافتات.
أقسام الدرس
5
الأمثلة
2
اللغة
العربية
المشاهدات
5,027
محتوى الدرس
في هذا الدرس 5تصفّح المواضيع

عند البحث عن طلب محدد وسط عشرة آلاف سجل والعثور عليه في العنصر الخامس، لا داعي لإهدار وقت المعالج في فحص آلاف العناصر المتبقية؛ فكتابة التعليمة break; داخل أي حلقة تنهيها على الفور وتنتقل مباشرةً إلى أول سطر برمجي يلي قوس إغلاق الحلقة.

مخطط مسار التحكم يقارن الخروج الكامل بـ break مقابل القفز للدورة التالية بـ continue
JavaScript
const codes = ['A10', 'B20', 'TARGET', 'C30', 'D40'];
let checked = 0;
for (const code of codes) {
  checked++;
  if (code === 'TARGET') { break; }
}
document.getElementById('out').textContent = `Found after checking ${checked} of ${codes.length} items`;

بخلاف break، لا توقف تعليمة continue; الحلقة بالكامل؛ بل تتخطى فقط بقية الأسطر في الدورة الحالية وتقفز لبدء الدورة التالية (فتنفذ خطوة الزيادة تلقائياً في حلقة for، بينما تنتقل مباشرةً لفحص الشرط في حلقة while).

يتيح الجمع بين continue (لتجاهل المدخلات الفارغة أو السالبة في مطلع الدورة) وbreak (للتوقف عند بلوغ السقف المطلوب) كتابة كود مسطح ونظيف دون تداخلات شرطية معقدة:

التعليمةتأثيرها على الدورة الحاليةتأثيرها على الدورات المتبقية
continue;تتخطى بقية أسطر الدورة الحاليةتستمر الحلقة طبيعياً مع العنصر التالي
break;تقطع الدورة الحالية فوراًتلغي جميع الدورات المتبقية وتنهي الحلقة
JavaScript
const payments = [40, -10, 0, 75, 50, 90];
let validTotal = 0;
for (const amount of payments) {
  if (amount <= 0) { continue; }
  validTotal += amount;
  if (validTotal >= 100) { break; }
}
document.getElementById('out').textContent = `Reached target at: ${validTotal} USD`;

عند تداخل حلقتين معاً (مثل المرور على صفوف جدول وأعمدته)، فإن تعليمة break; أو continue; غير المسماة تؤثر حصراً على الحلقة الداخلية المباشرة المحيطة بها، بينما تواصل الحلقة الخارجية دورتها التالية.

تسمح JavaScript بوضع اسم متبوع بنقطتين رأسيتين قبل الحلقة الخارجية مثل outerGrid: for (...) لكي تتمكن الحلقة الداخلية من كتابة break outerGrid; والخروج من الحلقتين معاً دفعةً واحدةً عند البحث في مصفوفة ثنائية الأبعاد.

تُستخدم اللافتات في نطاق ضيق مع الحلقات المتداخلة فقط؛ وفي البرامج الأكبر ستتعلم في الفصل القادم تقسيم المنطق داخل دوال مستقلة تمنحك قراءة أوضح.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

اختتمت فصل الحلقات بإتقان الإنهاء المبكر عبر break، وتخطي الدورة الحالية عبر continue، وتنقية البيانات، ونطاق الحلقات المتداخلة واللافتات المسماة. الخطوة التالية: انتقل الآن إلى الفصل الثامن «الدوال في JavaScript» لتغليف الأكواد في وحدات قابلة لإعادة الاستخدام!

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات3

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 3 مفهومةأول بطاقة، أول خطوة
01 break Statement تعليمة الإنهاء الفوري break
تنهي الحلقة أو كتلة switch المحيطة بها فوراً وتنقل التنفيذ إلى أول تعليمة تليها.
للمراجعة
02 continue Statement تعليمة تخطي الدورة continue
تتجاوز الأسطر المتبقية في الدورة الحالية فقط وتنتقل مباشرةً لبدء الدورة التالية للحلقة.
للمراجعة
03 Labeled Statement اللافتة البرمجية المسماة Label
معرّف متبوع بنقطتين يوضع قبل الحلقة الخارجية لتمكين break من الخروج من حلقتين متداخلتين معاً.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات1

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 1 مفهومةأول بطاقة، أول خطوة
01 2D 2D
Two-Dimensional Grid
الشبكات ثنائية الأبعاد من الصفوف والأعمدة التي يقتصر فيها break العادي على الحلقة الداخلية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/1مهام منجزة
  1. بدّل بين التبويب الأول ("1 2") والتبويب الثاني ("1 2 4 5") في المحاكي لترسيخ الفرق السلوكي بدقة.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

ما قيمة النص s بعد انتهاء الكود: let s = ""; for (let i = 1; i <= 4; i++) { if (i === 2) continue; s += i; } ؟

02

ما قيمة s بعد تنفيذ: let s = ""; for (let i = 1; i <= 4; i++) { if (i === 3) break; s += i; } ؟

03

في حلقتين متداخلتين، كتابة break; بدون لافتة داخل الحلقة الداخلية توقف الحلقتين الداخلية والخارجية معاً تلقائياً.

04

ما الخطأ الخطير الذي يحدث في حلقة while إذا نُفذت continue; قبل سطر زيادة متغير العداد؟

05

في حلقة for القياسية، عند تنفيذ continue; يستمر المحرك بتشغيل تعبير التحديث i++ قبل فحص الدورة التالية.

06

ما الصيغة الصحيحة للخروج من حلقة خارجية مسماة gridLoop من داخل حلقة فرعية؟

07

تعمل اللافتات المسماة في JavaScript مثل أوامر goto غير المقيدة التي تقفز عشوائياً إلى أي ملف آخر.

08

عند تنفيذ break; داخل كتلة switch واقعة بداخل حلقة for، ما الذي تخرج منه تلك التعليمة؟

09

استخدام break فور العثور على العنصر المطلوب يحسّن الأداء في القوائم الكبيرة بتفادي الفحوصات غير اللازمة.

10

أي تعليمة تعمل كحارس نظيف في بداية جسم الحلقة لتخطي العناصر السالبة أو الفارغة والانتقال للتالي؟