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

در بعضی از مواقع نیاز داریم عملیات های مشابه را چندین بار تکرار کنیم. برای مثال زمانی که میخواهیم کالاها را یکی پس از دیگری لیست کنیم. در این مواقع از حلقه ها کمک خواهیم گرفت. در این فصل با حلقه ی for در زبان جاوا اسکریپت آشنا خواهید شد.


حلقه for

یکی از پر استفاده ترین حلقه ها در زبان جاوا اسکریپت حلقه for است.  قاعده ی نوشتاری این حلقه عبارت است از :

for (begin; condition; step) {
  // ... loop body ...
}

در نمونه مثال زیر ، حلقه for دستور (alert(i را برای متغیر i از صفر تا ۳ (نه خود مقدار ۳) اجرا می کند :

for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}

در زیر قسمت های مختلف حلقه for را بررسی می کنیم :

  • Begin : دستور i = 0  یکبار و آن هم در اولین ورود به حلقه for اجرا می‌شود.
  • Condition : شرط i < 3 قبل از هر تکراری از حلقه بررسی می شود. در صورتی که ناصحیح باشد اجرای حلقه خاتمه می یابد.
  • Step : دستور ++i بعد از اجرای بدنه حلقه در هر تکرار اجرا می‌شود و مقدار شمارنده حلقه را افزایش می دهد. این امر قبل از ارزیابی شرط  برای تکرار بعدی صورت می گیرد.
  • Body : دستور (alert(i مادامی که شرط حلقه صحیح باشد اجرا می‌شود.

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

Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...

در مورد مثال ذکر شده در قسمت قبل اتفاقی که روی میدهد به شکل زیر است :

// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3

تعریف متغیر در داخل حلقه for 

شمارنده ی حلقه for یعنی متغیر i ، در خود حلقه تعریف می‌شود. چنین متغیری فقط در خود حلقه قابل استفاده است :

for (let i = 0; i < 3; i++) {
  alert(i); // 0, 1, 2
}
alert(i); // error, no such variable

می توان متغیر i را در خارج از حلقه تعریف کرد. در این صورت می توان به آن در خارج از حلقه نیز دسترسی داشت :

let i = 0;

for (i = 0; i < 3; i++) { // use an existing variable
  alert(i); // 0, 1, 2
}

alert(i); // 3, visible, because declared outside of the loop

نادیده گرفتن قسمت های مختلف حلقه

هر قسمت از حلقه for را می توان نادیده گرفت و از نوشتن آن صرف نظر کرد. برای مثال می توان قسمت آغازین (begin) حلقه for را نادیده گرفت. در این صورت باید از قبل متغیر را تعریف و مقداردهی کرده باشید :

let i = 0; // we have i already declared and assigned

for (; i < 3; i++) { // no need for "begin"
  alert( i ); // 0, 1, 2
}

میتوان step را از حلقه حذف کرد در این صورت عمل افزایش باید داخل بدنه ی حلقه انجام شود. در غیر این صورت با یک حلقه بی نهایت روبرو خواهیم بود :

let i = 0;

for (; i < 3;) {
  alert( i++ );
}

مثال بالا معادل حلقه (while (i < 3 است.

می توان همه قسمت های موجود در حلقه را حذف کرد در این صورت یک حلقه بی نهایت ایجاد میشود :

for (;;) {
  // repeats without limits
}

 دقت داشته باشید که هر دو سمی کالن (;) باید همچنان نوشته شوند، در غیر این صورت با خطا روبرو خواهیم شد.


شکستن حلقه و خروج از آن با استفاده از دستور break

به صورت عادی حلقه تا زمانی که شرط آن صحیح باشد به تکرار ادامه می‌دهد اما می‌توان در هر لحظه که بخواهیم از حلقه خارج شویم. برای این کار می توان از کلمه رزرو شده break استفاده کرد. برای مثال حلقه زیر از کاربر می خواهد که مجموعه ای از اعداد را وارد کند اما زمانی که کاربر مقدار خالی (" ") را وارد کند و یا عملیات را لغو کند خروج از حلقه توسط دستور break انجام می شود :

let sum = 0;

while (true) {

  let value = +prompt("Enter a number", '');

  if (!value) break; // (*)

  sum += value;

}
alert( 'Sum: ' + sum );

رفتن به تکرار بعدی حلقه با استفاده از دستور continue 

دستور continue  نسخه ای خفیف تر از break است. این دستور حلقه را متوقف نمی‌کند ، درعوض تکرار فعلی حلقه را متوقف کرده و حلقه را مجبور به شروع یک تکرار جدید می‌کند(در صورتی که شرط همچنان صحیح ارزیابی شود).

در حلقه زیر  از دستور continue  برای ایجاد خروجی اعداد فرد استفاده می شود :

for (let i = 0; i < 10; i++) {

  // if true, skip the remaining part of the body
  if (i % 2 == 0) continue;

  alert(i); // 1, then 3, 5, 7, 9
}

برای مقادیر زوج از متغیر i دستور continue اجرای بدنه حلقه را متوقف و تکرار بعدی را آغاز میکند.

منتشر شده در ۱۶ خرداد ۱۳۹۷ حمید رضا ملکی ۳۳۷۶ بازدید
دیدگاه ها

هنوز دیدگاهی ثبت نشده

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید