همراهان گرامی با آموزش حلقه ی for در جاوا اسکریپت درخدمت شما هستم.به وسیله ی حلقه می توان یک قطعه کد (code block) را چندین بار تکرار کرد(دوباره اجرا کرد).

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

به جای نوشتن کدهای زیر

text += cars[0] + “
“;

text += cars[1] + “
“;

text += cars[2] + “
“;

text += cars[3] + “
“;

text += cars[4] + “
“;

text += cars[5] + “
“; ‎

می توانید بنویسید.

نمونه یک
?
۱
۲
۳

for (i = 0; i < cars.length; i++) {
text += cars[i] + "
“;
}

انواع مختلف حلقه ها

حلقه ی for – یک code block (قطعه کد) را چندین بار تکرار می کند (در این نوع حلقه، مجموعه دستورات به تعداد دفعات معینی، تکرار خواهد شد(.

for/in- به تعداد دفعات معین خاصیت های (property) یک شی را تکرار می کند، برای حرکت در درون اعضای یک آرایه یا مجموعه خواص یک شی استفاده می شود. به ازای خواندن هر یک از اعضا آرایه یا یکی از خواص شی مورد نظر، یکبار دستورات درون حلقه اجرا خواهد شد.

حلقه ی while – دستور های حلقه مادام اینکه شرط مشخص شده برای آن درست باشد، دوباره اجرا خواهد شد. این دستور تا زمانی که شرط برقرار باشد دستورات را اجرا می کند.

do/while – دقیقا همانند حلقه while عمل می کند، با این تفاوت که شرط حلقه do … while در انتهای حلقه تعریف می شود.

حلقه ی for

حلقه ی for یک code block (قطعه کد) را چندین بار تکرار می کند (در این نوع حلقه، مجموعه دستورات به تعداد دفعات معینی، تکرار خواهد شد(. دستور نگارش (syntax) حلقه ی for به صورت زیر می باشد.

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

}

دستور اول پیش از اینکه حلقه (قطعه کد / code block) آغاز شود، اجرا می گردد.

دستور دوم شرط اجرای حلقه را مشخص می کند.

دستور سوم هر بار پس از اتمام اجرای حلقه تکرار (اجرا) می شود.

مثال

نمونه دو
?
۱
۲
۳

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

از مثال بالا نتیجه می گیریم که

دستور اول یک متغیر را پیش از اینکه حلقه آغاز شود مقداردهی و تنظیم می کند (var i = 0).

دستور دوم، شرطی را که در صورت برقرار بودن آن حلقه اجرا می شود تعریف می کند (i باید کمتر از ۵ باشد).

دستور سوم با هر بار اجرای قطعه کد به اندازه ی یک واحد مقدار متغیر را افزایش می دهد (i++).

Statement 1

به طور معمول دستور اول را برای مقدار دهی اولیه متغیری که در حلقه به کار می رود استفاده می کنیم (i = 0).

در جاوا اسکریپت این امر صادق نیست، بدین معنا که دستور اول اختیاری بوده و وجود آن الزامی نیست.

می توان هر تعداد که لازم است متغیر در اولین دستور مقداردهی کرد(باید متغیرها را به وسیله ی ویرگول از هم جدا کرد).

مثال

نمونه سه
?
۱
۲
۳

for (i = 0, len = cars.length, text = “”; i < len; i++) {
text += cars[i] + "
“;
}

یا می توان دستور اول را کاملا حذف کرد(مانند زمانی که مقادیر پیش از اینکه حلقه آغاز شود مقداردهی شده باشند).

مثال

نمونه چهار
?
۱
۲
۳
۴
۵
۶

var i = 2;
var len = cars.length;
var text = “”;
for (; i < len; i++) {
text += cars[i] + "
“;
}

Statement 2

اغلب از دستور دوم برای ارزیابی شرط متغیر اولیه استفاده می شود.

در جاوا اسکریپت دستور دوم نیز مانند دستور اول کاملا اختیاری می باشد.

چنانچه دستور دوم true بازگرداند، دستورهای درون حلقه دوباره اجرا می شوند، اما اگر false برگرداند و شرط دیگر برقرار نباشد، حلقه به کار خود خاتمه می دهد.

نکته

در صورت حذف کردن دستور دوم، ملزوم به قرار دادن دستور break درون ساختار حلقه می شویم. اگر این کار را انجام ندهید حلقه تا بی نهایت تکرار شده و در نهایت منجر به از کار افتادن (crash) مرورگر می شود.

Statement 3

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

همانند دستور اول و دوم، می توان دستور سوم را نیز حذف کرد.

مثال

نمونه پنج
?
۱
۲
۳
۴
۵
۶

var i = 0;
var len = cars.length;
for (; i < len; ) {
text += cars[i] + "
“;
i++;
}

حلقه ی For/In

به تعداد دفعات معین خاصیت های (property) یک شی را تکرار می کند، برای حرکت درون اعضای یک آرایه یا مجموعه property های یک شی استفاده می شود. به ازای خواندن هر یک از اعضا آرایه یا یکی از property های شی مورد نظر، یکبار statement داخل حلقه اجرا خواهد شد.

مثال

نمونه شش
?
۱
۲
۳
۴
۵
۶
۷

var person = {fname:”John”, lname:”Doe”, age:25};

var text = “”;
var x;
for (x in person) {
text += person[x];
}