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++;
}
مثال
استفاده از 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
باعث میشود که این متغیر تنها برای حلقه قابل رویت باشد.