مبحث حلقهها در تمام زبانهای برنامه نویسی وجود دارد و بسیار مهم است.
معروف ترین حلقه for است که آن را در مثال زیر ببینید:
for(var i=0; i < 5; i++){
console.log(i);
}
همانطور که میبینید for سه ورودی دارد، ورودی اول یک متغیر است که به آن مقدار اولیه هم دادیم، ورودی دوم یک شرط است که بررسی میکند i از 5 کوچکتر باشد، و در نهایت ورودی سوم باعث میشود i در هر بار اجرا یک عدد افزوده شود. نتیجه اجرا مانند زیر خواهد بود:
0
1
2
3
4
اصراری وجود ندارد که ورودی اول for را در همان جا تعریف کنیم و میتوانیم مقدار آن را از بالای حلقه دریافت کنیم:
var i=0;
for(i; i < 5; i++){
console.log(i);
}
البته یکی از بیشترین کاربردهای حلقهها پیمایش آرایهها و شیء هاست. مثال زیر را ببینید:
var fruits = ['banana', 'apple', 'mango'];
for(var i=0; i < fruits.length; i++){
console.log(fruits[i]);
}
به ترتیب نام تمام میوهها چاپ خواهد شد.
حلقه for را میتوان به گونهای دیگر برای پیمایش آرایهها استفاده کرد:
var fruits = ['banana', 'apple', 'mango'];
for(item in fruits){
console.log(fruits[item]);
}
شیءها را نیز میتوان به روشی مانند فوق پیمایش کرد:
var info = {type: 'website', name: 'hitos.ir'};
for(item in info){
console.log(info[item]);
}
چیزی که در خروجی چاپ میشود:
website
hitos.ir
سورس زیر را ببینید:
var info = {type: 'website', name: 'hitos.ir'};
for(item in info){
console.log(item + ": " + info[item]);
}
نتیجه اجرای کد فوق مانند زیر خواهد بود:
type: website
name: hitos.ir
حلقه while
نوع دیگری از حلقهها وجود دارد که while نام دارد. طرز کار به شکل زیر است:
var fruits = ['banana', 'apple', 'mango'];
var i=0;
while(i < fruits.length){
console.log(fruits[i]);
i++;
}
در پرانتز مقابل while شرطی را میگذاریم که اگر i از طول آرایه fruits کوچکتر باشد دستوارت درون حلقه اجرا خواهد شد. در سطر 5 مقدار i را یک عدد افزایش میدهیم.
به ترتیب نام تمام میوهها چاپ خواهد شد.
حلقه do while
حلقه do while عملکردی به شکل زیر دارد:
var fruits = ['banana', 'apple', 'mango'];
var i=0;
do{
console.log(fruits[i]);
i++;
}while(i < fruits.length);
در بالا ابتدا حلقه do یک بار اجرا میشود و در آخر با while بررسی میشود که حلقه یک بار دیگر اجرا شود یا خیر.
تفاوت do while با حلقه while و for در این است که حداقل یکبار اجرا میشود چون بررسی بر قرار بودن شرط در انتهای آرایه انجام میپذیرد.
دستورهای ویژه break و continue در حلقه ها
اجرای دستور break در حلقه منجر میشود حلقه متوقف شود و اجرای دستور continue منجر به ادامه چرخش حلقه خواهد شد:
var fruits = ['banana', 'apple', 'mango'];
var i=0;
for(i; true; i++){
if(i < fruits.length){
console.log(fruits[i]);
continue;
}else{
break;
}
}
اگر به ورودیهای حلقه for دقت کنید شرطی برای بررسی وجود ندارد و در عوض ما عبارت true را به جای شرط داده ایم، این یعنی همیشه این حلقه باید اجرا شود.
در عوض درون این حلقه یک شرط وجود دارد که در صورت بر قرار بودن console.log اجرا شده و با continue حلقه یک بار دیگر اجرا میشود.
اگر شرط بر قرار نبود با دستور break از حلقه خارج میشویم.
هر چند کاربرد continue و break در بالا خیلی کاربردی نبود ولی در آینده به این دو بسیار نیاز خواهید داشت.
حلقه بی نهایت
گاهی در برنامه نویسی حلقهها اشتباهی رخ میدهد که حلقه به صورت بی نهایت اجرا میشود و اجرای نرم افزار شما را با اشکال مواجه میکند. مثلا
for(var i=0; true; i++){
console.log(i);
}
حلقه بالا بدلیل true بودن شرط تا بی نهایت اجرا خواهد شد و یک نقص برنامه نویسی محسوب میشود.