تخطَّ إلى المحتوى

الحلقات في JavaScript: for و while

الدرس 10 من 28 · JavaScript

تخيّل أن معلمك طلب منك أن تكتب جملة «لن أتحدث في الفصل» مئة مرة. ستتعب يدك! الكمبيوتر لا يتعب أبداً، ويستطيع تكرار أي أمر آلاف المرات في جزء من الثانية. في هذا الدرس ستتعلم الحلقات (Loops): كيف تكرر الكود باستخدام for و while، وكيف توقف التكرار أو تتخطى جزءاً منه.

استخدم for عندما تعرف عدد مرات التكرار مسبقاً:

for (let i = 1; i <= 5; i++) {
console.log("الدورة رقم", i);
}
الناتج
الدورة رقم 1
الدورة رقم 2
الدورة رقم 3
الدورة رقم 4
الدورة رقم 5

بين القوسين ثلاثة أجزاء تفصلها فواصل منقوطة:

  1. البداية let i = 1: ننشئ عدّاداً اسمه i يبدأ من 1. يُنفّذ مرة واحدة فقط.
  2. الشرط i <= 5: يُفحص قبل كل دورة. إذا كان صحيحاً تُنفّذ الدورة، وإذا أصبح خاطئاً تتوقف الحلقة.
  3. الخطوة i++: تُنفّذ بعد كل دورة، فتزيد العدّاد واحداً.

الأمر يشبه العدّاد في صالة الألعاب الرياضية: تبدأ من 1، وبعد كل تمرين تزيد العدد، وتتوقف عندما تصل إلى الرقم المطلوب.

يمكنك أن تعدّ للخلف بتغيير البداية والشرط والخطوة:

for (let i = 3; i >= 1; i--) {
console.log(i);
}
console.log("انطلق!");
الناتج
3
2
1
انطلق!

هنا قوة الحلقات الحقيقية. اجمع كل الأرقام من 1 إلى 100 في ثلاثة أسطر:

let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
الناتج
5050

وهذا جدول ضرب العدد 7:

const num = 7;
for (let i = 1; i <= 5; i++) {
console.log(`${num} × ${i} = ${num * i}`);
}
الناتج
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35

تذكّر أن حروف النص مرقّمة من صفر. الحلقة تمر عليها واحداً تلو الآخر:

const word = "كود";
for (let i = 0; i < word.length; i++) {
console.log(`الحرف ${i + 1}: ${word[i]}`);
}
الناتج
الحرف 1: ك
الحرف 2: و
الحرف 3: د

استخدم while عندما لا تعرف عدد المرات مسبقاً، وتريد التكرار ما دام شرط ما صحيحاً. كلمة while تعني «طالما»:

let balance = 100;
let days = 0;
while (balance > 0) {
balance -= 30;
days++;
}
console.log(`نفدت النقود بعد ${days} أيام`);
الناتج
نفدت النقود بعد 4 أيام

معك 100 جنيه وتصرف 30 كل يوم. لا نعرف مسبقاً كم يوماً ستكفي، فالحلقة تستمر «طالما» الرصيد أكبر من صفر.

do…while: نفّذ مرة على الأقل

Section titled “do…while: نفّذ مرة على الأقل”

حلقة do...while تنفّذ الكود أولاً ثم تفحص الشرط، لذلك تعمل مرة واحدة على الأقل حتى لو كان الشرط خاطئاً من البداية:

let n = 10;
do {
console.log("نُفّذت مرة واحدة على الأقل");
} while (n < 5);
الناتج
نُفّذت مرة واحدة على الأقل

التحكم في الحلقة: break و continue

Section titled “التحكم في الحلقة: break و continue”
  • break توقف الحلقة كلها فوراً، مثل الخروج من السباق.
  • continue تتخطى الدورة الحالية فقط وتنتقل للتي بعدها، مثل تخطي أغنية في قائمة التشغيل.
for (let i = 1; i <= 10; i++) {
if (i % 2 === 0) continue; // تخطَّ الأرقام الزوجية
if (i > 7) break; // توقف بعد 7
console.log(i);
}
الناتج
1
3
5
7

اطبع جدول ضرب أي رقم تختاره. غيّر num و limit، ثم حاول أن تجعل الحلقة تطبع النتائج الزوجية فقط باستخدام continue:

جرّب بنفسكJavaScript
أو اضغط Ctrl + Enter

الناتج

  • الخطأ بواحد (Off-by-one): كتابة i < 5 بدلاً من i <= 5 تجعل الحلقة تعمل 4 مرات فقط. فكّر جيداً: هل تريد أن يدخل الرقم الأخير أم لا؟
  • نسيان تغيير متغير الشرط في while: يسبب حلقة لا نهائية.
  • وضع فاصلة منقوطة بعد القوس: for (let i = 0; i < 5; i++); تجعل الحلقة فارغة، ويُنفّذ ما بعدها مرة واحدة فقط.

سؤال

كم مرة تُنفّذ الحلقة for (let i = 0; i < 3; i++)؟

سؤال

ما الفرق بين break و continue؟

  • for عندما تعرف عدد التكرارات: بداية، وشرط، وخطوة.
  • while عندما تكرر «طالما» الشرط صحيح ولا تعرف العدد مسبقاً.
  • do...while تنفّذ مرة واحدة على الأقل قبل فحص الشرط.
  • break توقف الحلقة، و continue تتخطى دورة واحدة.
  • تأكد دائماً أن الحلقة ستنتهي لتتجنب الحلقة اللانهائية.