JavaScript For Loop

حلقه‌ها در جاوا اسکریپت

اگر می‌خواهید یک بلوک کد را بارها اجرا کنید، و هر بار با یک مقدار متفاوت، راه حل شما استفاده از حلقه‌ها است. معمولاً هنگام کار با آرایه‌ها به حلقه نیاز پیدا می‌کنید.

به کد زیر دقت کنید:

text += cars[0] + "<br />";
text += cars[1] + "<br />";
text += cars[2] + "<br />";
text += cars[3] + "<br />";
text += cars[4] + "<br />";
text += cars[5] + "<br />";

به جای نوشتن چنین کدی می‌توانید با استفاده از حلقه for به صورت بسیار خلاصه‌تر و کاراتر آن را به صورت زیر بنویسید:

for (let i = 0; i < cars.length; i++) {
text += cars[i] + "<br />";
}

انواع حلقه

  • for حلقه روی یک بلوک کد به تعداد مشخصی انجام می‌گیرد.
  • for in حلقه روی خصوصیت‌های یک شیء انجام می‌گیرد.
  • for of حلقه روی مقادیر یک شیء تکرارپذیر انجام می‌گیرد.
  • while حلقه روی یک بلوک کد تا زمانی که شرایط مشخص شده درست باشد انجام می‌گیرد.
  • do/while در این مورد هم حلقه روی یک بلوک کد تا زمانی که شرایط مشخص شده درست باشد انجام می‌گیرد.

حلقه for

for (statement 1; statement 2; statement 3) {
// code block to be executed
}

Statement 1: قبل از اجرای بلوک کد، اجرا می‌شود.

Statement 2: شرط اجرای کد را مشخص می‌کند.

Statement 3: هر بار بعد از اجرای بلوک کد، اجرا می‌شود.

for (let i = 0; i < 5; i++) {
text += "The number is " + i + "<br>";
}

کد بالا را چنین بخوانید:

عبارت اول، مقدار متغیر را قبل از اجرای کد تعیین می‌کند (let i = 0).

عبارت دوم، شرط اجرای حلقه را تعیین می‌کند (i باید از 5 کمتر باشد.)

عبارت سوم، مقدار i را هر بار بعد از اجرای کد یک واحد افزایش می‌دهد.

عبارت اول

معمولاً عبارت اول برای دادن مقدرا اولیه استفاده می‌شود. ولی در جاوا اسکریپت این عبارت اختیاری است. می‌توان آن را حذف کرد (مانند زمانی که قبل از حلقه، متغیر و مقدار اولیه آن را تعیین می‌کنید). همچنین می‌توان چندین مقدار اولیه را در عبارت اول با استفاده از علامت کاما مشخص کرد. به دو مثال زیر در این ارتباط توجه کنید:

حذف عبارت اول:

let i = 2;
let len = cars.length;
let text = "";
for (; i < len; i++) {
text += cars[i] + "<br />";
}

تعیین بیش از یک مقدار اولیه در عبارت اول:

for (let i = 0, len = cars.length, text = ""; i < len; i++) {
text += cars[i] + "<br />";
}

عبارت دوم

عبارت دوم جهت ارزیابی مقدار متغیر استفاده شده داخل حلقه for به کار می‌رود. تا زمانی که این شرط برقرار باشد حلقه از نو اجرا می‌شود. البته این عبارت هم در جاوا اسکریپت اختیاری است و به شرط آنکه یک break داخل حلقه تعریف شده باشد، می‌توان آن را حذف کرد. دقت کنید که اگر break داخل حلقه وجود نداشته باشد و عبارت دوم را هم حذف کنید، آنگاه حلقه بی‌نهایت بار تکرار خواهد شد.

عبارت سوم

عبارت سوم اغلب برای افزایش متغیر استفاده شده داخل حلقه به کار می‌رود. هر چند همیشه این گونه نیست. اولاً این عبارت هم در جاوا اسکریپت اختیاری است و می‌توان آن را به داخل حلقه برد و ثانیاًَ به جای افزایش ممکن است که متغیر را کاهش داده و یا هر چیز دیگری را استفاده کنیم.

let i = 0;
let len = cars.length;
let text = "";
for (; i < len; ) {
text += cars[i] + "<br />";
i++;
}

مثال


<!DOCTYPE HTML>
<html>
  <body>
    <h2>JavaScript For Loop</h2>

    <p id="demo"></p>

    <script>
    const cars = ["BMW", "Volvo", "Saab", "Ford"];

    let i = 0;
    let len = cars.length;
    let text = "";

    for (; i < len; ) {
      text += cars[i] + "<br>";
      i++;
    }
    document.getElementById("demo").innerHTML = text;
    </script>

  </body>
</html>

خروجی:

استفاده از var و let در یک حلقه

استفاده از var

var i = 5;

for (var i = 0; i < 10; i++) {
// some code
}

// Here i is 10

در کد بالا متغیر تعریف شده داخل حلقه، متغیر خارج از حلقه را بازتعریف می‌کند.

استفاده از let

let i = 5;

for (let i = 0; i < 10; i++) {
// some code
}

// Here i is 5

در این کد متغیر تعریف شده داخل حلقه ، متغیر خارج از حلقه را بازتعریف نمی‌کند. تعریف متغیر i داخل حلقه با استفاده از let باعث می‌شود که این متغیر تنها برای حلقه قابل رویت باشد.