زمانی که بخواهیم یک بلاک از کد را به تعداد مشخص یا تعداد آیتم های لیست پیمایش کنیم از حلقه for استفاده می کنیم.حلقه ها یکی از دستورات مفیدی هستند بخصوص زمانی که قصد داریم یک کد را به تعداد مشخص و در مقادیر متفاوت پیمایش و نمایش دهیم.
فرض کنید آرایه ای از مجموعه مقادیر داشته باشید برای دسترسی به تک تک آیتم ها باید بصورت دستی اندیس آیتم ها را وارد کنیم.
مثال:
1 2 3 4 5 6 7 8 9 |
var list = ["amir javanmir", "shahryar barati"]; var text = ""; text += list[0]; text += list[1]; /* amir javanmir shahryar barati */ |
حال برای راحتی کار از حلقه for استفاده می کنیم.
مثال:
1 2 3 4 5 6 7 |
for (let i = 0; i < list.length ; i++) { text += list[i] + "<br>"; } /* amir javanmir shahryar barati */ |
انواع و اقسام حلقه ها در جاوااسکریپت
جاوااسکریپت از انواع مختلفی از حلقه ها پشتیبانی می کند.
- نوع for: این نوع حلقه آیتم ها را به تعداد مشخص پیمایش میکند.
- نوع for/in: از این نوع حلقه برای پیمایش خصوصیات آبجکت استفاده می شود
- نوع for/of: از این نوع حلقه برای مقادیر هر نوع آبجکتی که قابل iterable است استفاده می شود
- نوع while: حلقه تا زمانی ادامه دارد که شرط تعیین شده صحیح است.
- نوع do/while: این نوع حلقه ابتدا بلاک کد اجرایی را یکبار اجرا کرده سپس براساس شرط آن را تکرار میکند.
حلقه for
پیمایش آیتم های یک لیست از طریق دستور for به شکل زیر است:
1 2 3 |
for (statement 1; statement 2; statement 3) { // code block to be executed } |
پارامتر ها:
- مقدار Statement 1: این دستور یک مقدار اولیه برای شروع پیمایش است و قبل از اجرای دستورات داخل پرانتز یا بیرون پرانتز for اجرا میشود. میتوان هم با let هم با var تعریف شود. در هر بار پیمایش مقدار اولیه یکبار افزایش پیدا میکند. قرار گرفتن این پارامتر درون پرانتز for اختیاری است و شما می توانید آن را در بیرون حلقه ابتدا تعریف کنید. شما میتوانید در این پارامتر مقادیر و متغیرهای دیگری را تنظیم کنید و هر مقدار با , درون پارامتر نخست از دیگری جدا میشود.
مثال:
1 2 3 |
for (let i = 0, len = names.length, text = ""; i < len; i++) { text += names[i] + "<br>"; } |
- مقدار Statement 2: یک دستور شرطی برای مقدار اولیه در نظر گرفته شده که براساس آن حلقه ادامه پیدا میکند. قرار گرفتن این پارامتر درون پرانتز for اختیاری است و شما می توانید آن را در قالب شرط if درون بلاک قرار دهید.در صورت true بودن شرط حلقه ادامه دارد.
- مقدار Statement 3: افزایش مقدار اولیه با هر بار پیمایش آیتم ها. این مقدار هم میتواند کم شود مانند –i یا بیشتر شود مانند ++i یا i = i + 15 . میتوان افزایش مقدار را درون بلاک و انتهای آن انجام داد.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
let i = 0; let len = names.length; let text = ""; for (; i < len; ) { text += names[i] + "<br>"; i++; } مثال: for (let i = 0; i < 5; i++) { text += "The number is " + i + "<br>"; } /* 0 1 2 3 4 */ |
توضیح مثال بالا:
در ابتدا مقدار اولیه برای پیمایش آیتم ها را برابر با let i = 0 درون پرانتز for تعیین کرده ایم.
سپس با استفاده از دستور شرطی بررسی کرده ایم که i کوچکتر از عدد ۵ است یا خیر.
در دستور بعد در صورت کوچک بودن i از ۵ مقدار i یک واحد افزایش یافته است.
در نهایت با هر بار true بودن شرط بلاک کد اجرا میشود.
نکته: در صورتی که پارامترهای حلقه for را بیرون یا درون نوشتید باید جای خالی آن را با قرار دادن ; پر کنید.
مثال:
1 2 3 4 5 6 7 |
let i = 0; let len = names.length; let text = ""; for (; i < len; ) { text += names[i] + "<br>"; i++; } |
تعریف مقدار اولیه با var یا let
شما میتوانید مقدار اولیه را هم با var هم با let تعریف کنید. اما یک تفاوتی بین این دو است.
تعریف مقدار اولیه با var به بیرون از حلقه نیز سرایت میکند و قابل استفاده و global است.
مثال:
1 2 3 4 5 6 |
var i = 5; for (var i = 0; i < 10; i++) { // some code } console.log(i); //10 |
اما تعریف متغیر با let درون حلقه محدود به همان بلاک از کد است و خارج از آن غیر قابل دسترس است.
مثال:
1 2 3 4 5 6 |
let i = 5; for (let i = 0; i < 10; i++) { // some code } console.log(i); //5 |
نمونه مثال تعریف متغیر بیرون از حلقه با let و استفاده (نه تعریف جدید) درون بلاک کد
مثال:
1 2 3 4 5 6 |
let i = 5; for (i = 0; i < 10; i++) { // some code } console.log(i); //10 |