حلقتا التكرار while و for في جافاسكربت: فهم واستخدامات متقدمة
في لغة البرمجة جافاسكربت، تعد حلقات التكرار من الأدوات الأساسية التي يعتمد عليها المبرمجون لإنجاز مهام التكرار بشكل فعال. من بين هذه الحلقات، تبرز حلقتا التكرار while و for كأدوات رئيسية لتنفيذ تكرارات معينة عبر الكود البرمجي. تكمن أهمية هذه الحلقات في قدرتها على تقليل التعقيد وتحسين الأداء، مما يسمح بكتابة برامج أكثر نظافة وفاعلية.
1. مقدمة عن الحلقات التكرارية في جافاسكربت
الحلقات التكرارية تُستخدم بشكل عام لتنفيذ مجموعة من التعليمات البرمجية بشكل متكرر حتى يتم الوفاء بشرط معين. في جافاسكربت، يوجد العديد من أنواع الحلقات التي تتيح للمبرمج التحكم بشكل مرن في عملية التكرار. أبرز أنواع الحلقات المستخدمة هي حلقة for وحلقة while.
كل حلقة من هذه الحلقات تعمل بطريقة مغايرة ولكن الهدف الرئيسي لها هو نفسه: تكرار تنفيذ جزء من الكود إلى أن يتم استيفاء الشرط المخصص.
2. حلقة while في جافاسكربت
تعتبر حلقة while من أبسط الحلقات التكرارية في جافاسكربت. الفكرة الأساسية وراء استخدام حلقة while هي أن الحلقة تستمر في التكرار طالما أن الشرط المحدد يُعتبر صحيحًا. تُكتب بشكل أساسي كالتالي:
javascriptwhile (condition) {
// الكود الذي سيتم تنفيذه في كل مرة
}
آلية عمل حلقة while:
-
يتم تقييم الشرط في بداية كل تكرار.
-
إذا كان الشرط صحيحًا (أي يعيد قيمة
true)، يتم تنفيذ الكود الموجود داخل الحلقة. -
بعد تنفيذ الكود، يتم العودة لتقييم الشرط مرة أخرى.
-
إذا أصبح الشرط خاطئًا (أي يعيد قيمة
false)، تتوقف الحلقة.
على سبيل المثال، إذا أردنا طباعة الأعداد من 1 إلى 5 باستخدام حلقة while، فإن الكود سيكون كالتالي:
javascriptlet i = 1;
while (i <= 5) {
console.log(i);
i++;
}
الشرح:
-
تبدأ المتغير
iمن القيمة 1. -
إذا كان
iأقل من أو يساوي 5، تتم طباعة قيمته. -
بعد طباعة القيمة، يتم زيادة
iبمقدار 1. -
تتكرر العملية إلى أن تصبح قيمة
iأكبر من 5، وعندها يتوقف التكرار.
مزايا حلقة while:
-
بساطتها وسهولة فهمها.
-
مناسب لحالات غير معروفة سلفًا عدد التكرارات.
-
يمكن استخدامها في مواقف لا يعرف فيها المبرمج عدد مرات التكرار مسبقًا.
عيوب حلقة while:
-
قد تؤدي إلى حلقة لانهائية إذا كان الشرط لا يصبح خاطئًا أبدًا.
-
يتعين على المبرمج متابعة التغيير المناسب للمتغيرات داخل الحلقة لضمان توقفها في الوقت المناسب.
3. حلقة for في جافاسكربت
حلقة for هي نوع آخر من الحلقات التكرارية التي تُستخدم عادة عندما يعرف المبرمج عدد التكرارات مسبقًا. تستخدم حلقة for لتكرار الكود ضمن نطاق معين أو عبر مجموعة من العناصر.
تُكتب حلقة for بالشكل التالي:
javascriptfor (initialization; condition; increment) {
// الكود الذي سيتم تنفيذه في كل مرة
}
مكونات حلقة for:
-
التخصيص (Initialization): في هذه المرحلة، يتم تهيئة المتغيرات التي سيتم استخدامها في الحلقة. عادة ما يكون هذا المتغير هو عداد التكرار.
-
الشرط (Condition): هذا هو الشرط الذي يتم اختباره في كل تكرار. إذا كان الشرط صحيحًا، يستمر تنفيذ الحلقة.
-
الزيادة (Increment): هذا هو التغيير الذي يتم تطبيقه على المتغيرات المستخدمة في التكرار بعد كل مرة يتم فيها تنفيذ الكود داخل الحلقة.
على سبيل المثال، إذا أردنا طباعة الأعداد من 1 إلى 5 باستخدام حلقة for، فسيكون الكود كالتالي:
javascriptfor (let i = 1; i <= 5; i++) {
console.log(i);
}
الشرح:
-
تبدأ الحلقة بتخصيص المتغير
iعلى القيمة 1. -
ثم يتم فحص الشرط
i <= 5. إذا كان صحيحًا، يتم طباعة قيمةi. -
بعد كل طباعة، يتم زيادة قيمة
iبمقدار 1. -
تتكرر العملية حتى يصبح
iأكبر من 5، عندها تتوقف الحلقة.
مزايا حلقة for:
-
مناسبة بشكل خاص عندما يكون عدد التكرارات معروفًا مسبقًا.
-
توفر بنية أكثر تنظيماً ووضوحًا عند التعامل مع حلقات تحتوي على عدد ثابت من التكرارات.
-
يمكن دمجها بسهولة مع التكرار عبر المصفوفات أو الكائنات.
عيوب حلقة for:
-
قد تكون أقل مرونة عندما لا يكون عدد التكرارات معروفًا مسبقًا.
-
يتطلب المبرمج تحديد التخصيص والشرط والزيادة بشكل دقيق، مما قد يؤدي إلى بعض التعقيد في الحالات الأكثر ديناميكية.
4. الفرق بين حلقة while وحلقة for
على الرغم من أن الحلقات while و for تشترك في الهدف الرئيسي وهو تكرار تنفيذ الكود، إلا أن هناك بعض الاختلافات الجوهرية بينهما.
-
البنية:
-
for: عادة ما تستخدم في الحالات التي يكون فيها عدد التكرارات معروفًا مسبقًا. حيث يتم تحديد التخصيص، الشرط، والزيادة في سطر واحد. -
while: تستخدم في الحالات التي لا يكون فيها عدد التكرارات معروفًا مسبقًا، ويُشترط أن يكون التقييم أوليًا في بداية كل تكرار.
-
-
المرونة:
-
while: أكثر مرونة عندما لا يكون عدد التكرارات معروفًا أو يتغير بناءً على ظروف معينة داخل الحلقة. -
for: أقل مرونة في مثل هذه الحالات، حيث يجب أن يكون هناك تخصيص واضح للعدد والشرط.
-
-
سهولة الاستخدام:
-
for: تعتبر أسهل عند العمل مع المصفوفات أو الأشياء التي تحتاج إلى التكرار عبر عناصر معروفة مسبقًا. -
while: تتيح سهولة أكبر في بعض الحالات التي تحتاج فيها إلى التكرار بناءً على شرط يتم تحديثه داخل الحلقة.
-
5. التكرار عبر المصفوفات باستخدام الحلقات
يمكن استخدام كل من حلقة for وحلقة while لتكرار المصفوفات. مع ذلك، تعتبر حلقة for الخيار الأمثل عندما يكون المصفوفات ذات حجم ثابت. على سبيل المثال:
javascriptlet array = [10, 20, 30, 40, 50];
for (let i = 0; i < array.length; i++) {
console.log(array[i]);
}
أما في حالة استخدام حلقة while، يمكن تنفيذ التكرار عبر المصفوفات كما يلي:
javascriptlet array = [10, 20, 30, 40, 50];
let i = 0;
while (i < array.length) {
console.log(array[i]);
i++;
}
في هذا السياق، تقدم حلقة for بنية أكثر سهولة ووضوحًا لأنها تتضمن التخصيص، الشرط، والزيادة في سطر واحد.
6. الحلقات المتداخلة
من الممكن أيضًا استخدام الحلقات المتداخلة، حيث تكون هناك حلقة for داخل حلقة for أخرى أو while داخل while. يمكن أن تكون هذه الحلقات مفيدة عند التعامل مع المصفوفات متعددة الأبعاد أو البيانات المعقدة مثل جداول البيانات.
javascriptfor (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
console.log(`i: ${i}, j: ${j}`);
}
}
7. استخدام الحلقات مع الكائنات
في حين أن الحلقات for و while غالبًا ما تُستخدم مع المصفوفات، فإنه يمكن أيضًا استخدامها مع الكائنات في جافاسكربت. لكن في هذه الحالة، يحتاج المبرمج إلى تحويل الكائن إلى مصفوفة من المفاتيح أو القيم باستخدام طرق مثل Object.keys() أو Object.values().
8. استخدام حلقات for...in و for...of
من بين الأنواع الخاصة من الحلقات التي تقدمها جافاسكربت، نجد حلقتي for...in و for...of اللتين تتيحان تكرار العناصر داخل الكائنات والمصفوفات.
-
for...in: تُستخدم لتكرار المفاتيح في الكائنات. -
**`for...

