دستورswitch براي انجام عمليات مختلف در شرايط متفاوت استفاده ميگردد.
با دستورswitch يكي ازچندين بلوك انتخاب واجرا ميگردد .
switch(expression) { case x: // code block break; case y: // code block break; default: // code block }
اين دستور مطابق روال زير كار ميكند:
مثال ـ تعيين نام روز هفته .تابع يا متدgetDay() شماره روز را بين (0-6)برگشت ميدهد .
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
هنگاميكه جاوااسكريپت به كي وردbreak برخورد ميكند، منجر به خارج شدن از ناحيه سوئيچ ميشود .اين بدين معني است كه اجراي بلوك سوئيچ متوقف ميگردد.
آخرين بلوك سوئيچ نياز بهbreak ندارد، بالاخره در انتها آن متوقف ميشود .
نكته ـ اگر كي وردbreak حذف شود، از بلوك سوئيچ خارج نشده وبعدي ارزيابي ميشود.
كي وردdefault كدهائي را مشخص ميكند، كد در صورت عدم تطيبق هيچ حالتي اجرا ميگردد.
مثال ـ تابعgetDay() شماره روز هفته را برگشت ميدهد .اگر روز6. يا0 نباشد، پيغامي داده ميشود . پيغام درdefault
switch (new Date().getDay()) {
case 6:
text = "Today is Saturday";
break;
case 0:
text = "Today is Sunday";
break;
default:
text = "Looking forward to the Weekend";
}
كي وردdefault لازم نيست در آخر بلوك سوئيچ باشد، هرجائي ميتواند قرار گيرد .
مثال ـ كي ورد پيش فرض درابتدا
switch (new Date().getDay()) {
default:
text = "Looking forward to the Weekend";
break;
case 6:
text = "Today is Saturday";
break;
case 0:
text = "Today is Sunday";
}
اگر حالت پيش فرض(default) در آخر نباشد، جاوااسكريپت آنرا در آخر در نظر ميگيرد .
در سوئيچcase ها ميتوانند داراي كد مشترك باشند، اين همان شرطor در case است.
مثال ـ در مثال زيرcase 4 and case 5 داراي كد مشترك هستند، همچنين case 0 and 6
switch (new Date().getDay()) {
case 4:
case 5:
text = "Soon it is Weekend";
break;
case 0:
case 6:
text = "It is Weekend";
break;
default:
text = "Looking forward to the Weekend";
}
مثال ـ در مثال زير هيچ تطبيقي وجود ندارد.
let x = "0";
switch (x) {
case 0:
text = "Off";
break;
case 1:
text = "On";
break;
default:
text = "No value found";
}