حل

حلقات `while` في JavaScript

8 تمارين

نبذة عن حلقات `while`

الصيغة العامة

باستخدام حلقة while، يمكنك تنفيذ الكود بشكل متكرر طالما أن شرطًا معيّنًا متحقّق.

تُكتب هذه الحلقة بالكلمة المفتاحية while، تليها شرط بين الأقواس الهلالية، ثم كتلة كود تحتوي على جسم الحلقة بين الأقواس المعقوفة.

while (condition) {
  // code that is executed repeatedly as long as the condition is
  // true
}

توفّر JavaScript أيضًا حلقة do-while. هنا يُفحص الشرط بعد تنفيذ جسم الحلقة. وهذا مفيد عندما يعتمد الشرط على عمليات تقييم تُجرى داخل الجسم.

do {
  // The code here will always be executed once and then
  // repeatedly while the condition is true.
} while (condition);

عبارة break

داخل جسم الحلقة، يمكنك استخدام الكلمة المفتاحية break لإيقاف تنفيذ الحلقة تمامًا. كثيرًا ما تُستخدم هذه الكلمة مع true كشرط. وبذلك يمكنك التحكم في وقت توقف الحلقة من أي مكان داخل جسمها.

const winningNumber = 7;

while (true) {
  const num = readUserGuess();
  if (num === winningNumber) {
    break;
  }
}

لا يمكن استخدام الكلمة المفتاحية break داخل دالة متداخلة في الحلقة، راجع توثيق MDN للاطلاع على مثال.

عبارة continue

على عكس break، لا توقف الكلمة المفتاحية continue سوى تنفيذ التكرار الحالي وتنتقل إلى التكرار التالي. وباستخدام continue يمكنك غالبًا تجنّب تغليف أجزاء كبيرة من جسم الحلقة داخل جملة شرطية.

let i = 0;

while (i < 100) {
  i = i + 2;

  if (i % 3 === 0) {
    continue;
  }

  // The code here will only be executed when i was not divisible
  // by 3 in the check above.
}

الحلقات اللانهائية

تنشأ الحلقة التي تتكرر إلى الأبد (نظريًا) عندما يكون شرط الحلقة متحقّقًا دائمًا ولا يتم الوصول إلى عبارة break أو return داخل جسمها. عندئذٍ يجب إنهاء التنفيذ من الخارج. واعتمادًا على البيئة التي يعمل فيها هذا الكود، قد يحدث ذلك تلقائيًا أو يتطلب تدخّلًا يدويًا.

let i = 0;

while (i < 100) {
  if (i % 3 === 0) {
    continue;
  }

  i = i + 2;
}

// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.

قد يبدو اكتشاف الحلقات اللانهائية أمرًا بسيطًا في هذا المثال المبسّط، لكنه ليس بهذه السهولة دائمًا مع كود أكثر تعقيدًا. من الممارسات الجيدة أن تفكّر مليًّا فيما إذا كان شرطك سيصبح خطأً في النهاية، أو ما إذا كان سيتم الوصول إلى عبارة break أو return.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم حلقات `while`