در جلسه قبلی با دستور شرطی if…else آشنا شدید. در این بخش از سری آموزش جاوا اسکریپت, قصد داریم به شما دستور شرطی switch…case در جاوا اسکریپت را یاد بدیم.
استفاده از دستور شرطی switch…case در جاوا اسکریپت
دستور switch..case یک جایگزین برای دستور if..else if..else است که در واقع هر دو یک چیز هستند.
دستور switch..case یک متغییر یا عبارت را در برابر مجموعه ای از مقادیر تست می کند تا تطابق را پیدا و سپس کد قرار گرفته در آن بلاک را اجرا کند
سینتکس آن بصورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 |
switch(x){ case value1: // Code to be executed if x === value1 break; case value2: // Code to be executed if x === value2 break; ... default: // Code to be executed if x is different from all values } |
مثال زیر نام هفته را بر اساس شرط نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
var d = new Date(); switch(d.getDay()) { case 0: alert("Today is Sunday."); break; case 1: alert("Today is Monday."); break; case 2: alert("Today is Tuesday."); break; case 3: alert("Today is Wednesday."); break; case 4: alert("Today is Thursday."); break; case 5: alert("Today is Friday."); break; case 6: alert("Today is Saturday."); break; default: alert("No information available for that day."); break; } |
متد getDay()
شماره هفته را از ۰ تا ۶ برگشت می دهد, که ۰ نمایانگر یکشنبه است. در مورد توابع تاریخ و زمان در جاوا اسکریپت در جلسات بعدی آشنا می شویم.
نکته: در دستور شرطی switch…case , مقدار عبارت یا متغیر با اپراتور ===
مقایسه می شود به این معنی که اگر x = “۰”
باشد, پس با case 0:
تطابق نخواهد داشت چرا که نوع داده آن ها یکسان نیست.
دستور شرطی switch…case در جاوا اسکریپت یک تفاوت مهم با دستور if…else دارد.
دستور switch
خط به خط (دستور به دستور) اجرا می کند و همین که جاوا اسکریپت یک case
را که true
بر می گرداند پیدا کرد, نه تنها کل بلاک case مورد نظر را اجرا می کند, بلکه بصورت اتوماتیک کل case های بعد آن را نیزر اجرا می کند.
برای جلوگیری از این مورد ما بعد از هر case یک دستور break
را استفاده می کنیم.
دستور break
به مفسر جاوا اسکریپت می گوید همین که اولین مورد که true
برگشت داد را اجرا و بعد دستور را به اتمام برساند.
به هر حال دستور break
برای case
یا default
ضروری نیست اگر در اخر دستور switch
باشد.
اما تمرین خوبی است که break
را برای جلوگیری از ایجاد ارور یا نتایج غیرمنتظره, استفاده کنید.
default
نیز اختیاری است, که یک عملیاتی را در صورتی که هیچ case ی با عبارت مشخص شده تطابق پیدا نکرد, انجام دهد.
لازم نیست که default
حتما در آخر دستورات switch
است شود و اینجا هم یک مثال می بینید که در آخر نیست :
1 2 3 4 5 6 7 8 9 10 11 12 |
var d = new Date(); switch(d.getDay()) { default: alert("Looking forward to the weekend."); break; case 6: alert("Today is Saturday."); break; case 0: alert("Today is Sunday."); } |
Case های چندگانه
هر case باید مقدار یکتا داخل دستور شرطی switch…case در جاوا اسکریپت داشته باشد. Case های متفاوت نیاز به عملیات یکتا هم نیستند و برا همین می شود یک عملیات یکسان را به چند case نسبت داد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var d = new Date(); switch(d.getDay()) { case 1: case 2: case 3: case 4: case 5: alert("It is a weekday."); break; case 0: case 6: alert("It is a weekend day."); break; default: alert("Enjoy every day of your life."); } |
امیدوارم از دستور شرطی switch…case در جاوا اسکریپت نهایت استفاده را برده باشید.
در بخش بعدی با نحوه کار با آرایه ها در جاوا اسکریپت آشنا می شوید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.