break و continue
الحلقة يمكن أن تكمل كل دورة حتى النهاية — إلا إذا وجّهتها أنت. أحياناً وجدت الجواب وتريد التوقف. وأحياناً عنصر بلا فائدة وتريد تخطيه ثم المتابعة. break يخرج من الحلقة فوراً. continue ينتقل إلى الدورة التالية. نفس عائلات الحلقات التي تعرفها؛ كلمتان صغيرتان تغيّران مسار التنفيذ.
ماذا يفعل break؟
ينهي أقرب حلقة الآن. لا تُنفَّذ الدورات اللاحقة. ما يأتي بعد الحلقة في السكربت ما زال يعمل. فكّر: «انتهيت — اخرج.» شائع عند البحث عن أول تطابق دون الحاجة لمسح الباقي.
break مقابل continue
📊 توجيه الحلقة في منتصف الطريق
| الكلمة | التأثير | متى تناسب |
|---|---|---|
break |
اخرج من الحلقة الآن | وجدت أول تطابق؛ لا تنتظر أكثر |
continue |
تخطَّ بقية هذه الدورة وابدأ التالية | تجاهل عنصراً سيئاً؛ أكمل المسح |
| لا شيء منهما | كل دورة تنفّذ الجسم كاملاً | كل العناصر تحتاج نفس المعالجة |
| بعد الحلقة | الكود أسفل الحلقة ما زال يعمل | break يخرج من الحلقة فقط لا من السكربت كله |
اختر break عندما تصبح الدورات اللاحقة بلا فائدة. واختر continue عندما يجب أن تصمت دورة واحدة مع استمرار السير. لا تبدلهما — الخطأ يبدو «شبه صحيح» ويصعب اكتشافه.
const nums = [2, 4, 7, 8];
let found = null;
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 7) {
found = nums[i];
break;
}
}
console.log(found);
توقف عند العثور على تطابق
تفحص الحلقة 2 ثم 4 ثم 7. عند 7 تخزّن القيمة وتستدعي break. لا تُنفَّذ 8. قيمة found تصبح 7. بلا break كانت الحلقة ستكمل بعد معرفة الجواب.
for (let i = 1; i <= 5; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}
تخطَّ دورة وواصل
عندما يكون i زوجياً، يقفز continue إلى i التالي. يُتخطى سطر console.log لتلك الدورات. ترى 1 و3 و5. الحلقة لم تتوقف — مرّت فقط على الأعداد الزوجية.
let n = 1;
while (n < 20) {
if (n === 5) {
break;
}
console.log(n);
n = n + 1;
}
اخرج من while مبكراً
كان while سيستمر طالما n < 20. عند n === 5 يخرج break. طُبع 1–4. يناسب نمط «تابع حتى قاعدة توقف ثم اخرج» دون إكمال كل الدورات الممكنة.
const colors = ["red", "skip", "blue"];
for (const c of colors) {
if (c === "skip") {
continue;
}
console.log(c);
}
تخطَّ قيماً في for...of
for...of ما زال يمشي على القيم. continue يتجاهل "skip" ويطبع red ثم blue. فكرة التوجيه واحدة عبر for وwhile وfor...of — أقرب حلقة فقط.
const parts = ["A", "x", "B", "x", "C"];
let msg = "";
for (const p of parts) {
if (p === "x") {
continue;
}
msg = msg + p;
}
console.log(msg);
صفِّ أثناء الدمج
كل "x" يُتخطى؛ تُضاف الحروف. النتيجة ABC. نفس عادة الدمج من دروس الحلقات السابقة — continue بوابة التصفية داخل المسير.
اعرض break و continue على الصفحة
امشِ على قائمة قصيرة، تخطَّ تسمية بـ continue، وتوقف مبكراً بـ break بعد علامة، واكتب النتيجة في الصفحة.
<!DOCTYPE html>
<html>
<head>
<title>break / continue — page</title>
</head>
<body>
<p id="out">…</p>
<script>
const items = ["a", "skip", "b", "stop", "c"];
let line = "";
for (const item of items) {
if (item === "skip") {
continue;
}
if (item === "stop") {
break;
}
line = line + item + " ";
}
let box = document.getElementById("out");
box.textContent = "kept=" + line.trim();
</script>
</body>
</html>
الصفحة تعرض kept=a b. تُجاهل "skip"؛ وتنهي "stop" الحلقة قبل "c". غيّر المصفوفة، حدّث الصفحة، واقرأ السطر الجديد. الدرس التالي يبدأ الدوال — كتل عمل تستدعيها بالاسم.
جرّبها بنفسك
- في
forعلى[3, 9, 1]نفّذbreakعند القيمة9واحفظها. - اطبع الأعداد الفردية فقط من
1إلى6باستخدامcontinueعلى الزوجية. - في
whileتوقف بـbreakعندما يصل العداد إلى3. - مع
for...ofعلى["ok", "no", "ok"]مرّ بـcontinueعلى"no". - ادمج
["1", "-", "2"]إلى12بتخطي"-". - في عرض HTML غيّر المصفوفة فقط، حدّث، واقرأ
kept=.
أخطاء شائعة
- الاعتقاد أن
continueيخرج من الحلقة كلها (ذلك دورbreak) - وضع عمل إضافي بعد
breakفي نفس الدورة — لن يُنفَّذ أبداً - في
whileاستخدامcontinueدون تحديث العداد أولاً — خطر حلقة لا نهائية - استخدام
breakعندما أردت فقط تخطي عنصر واحد - توقع أن
breakيغادر السكربت كله — يخرج من أقرب حلقة فقط
خلاصة
break— اخرج من الحلقة الآن؛ لا تُنفَّذ الدورات اللاحقةcontinue— تخطَّ بقية هذه الدورة؛ ابدأ التالية- يعمل في
forوwhileوfor...of - أنماط البحث غالباً تستخدم
break؛ أنماط التصفية غالباًcontinue - الكود بعد الحلقة ما زال يعمل بعد
break - التالي: الدوال — سمِّ كتلة عمل واستدعِها
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى