با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، دستورات شرطی if..else که یکی از پرکاربردترین دستورات در زبان های برنامه نویسی می باشند در عبارات شرطی کوتاه که حداکثر تا سه شرط دارند مفید خواهد بود، اما دز عبارات شرطی طولانی تر که شامل چندین بررسی شرط می شود، استفاده از if..else کمی کار را پیچیده تر می کند، برای چنین مواردی دستور Switch در جاوا اسکریپت ارائه شده که برای دستورات شرطی چندگانه بکار می رود.
در ادامه ی این بخش ما شما را با سینتکس و مثال هایی از دستور Switch در جاوا اسکریپت آشنا خواهیم کرد.
سینتکس پایه و عمومی دستور Switch:
1 2 3 4 5 6 7 8 9 10 | switch(expression) { case x: code block break; case y: code block break; default: code block } |
عملکرد دستور Switch:
مثال- در مثال زیر متد getDay() روز هفته را در قالب اعداد ۰ تا ۶ برمی گرداند.
مثلا : (Sunday=0, Monday=1, Tuesday=2 ..)
مثال از عدد بدست آمده از getDay() نام روز هفته را محاسبه می کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 می رسد، از آن بلوک خارج شده و کدهای بعد از آن را اجرا می کند.
اینکار از اجرای کدهای بعد از بلوکی که با شرط مطابقت داشته جلوگیری می کند.
اگر هر یک از عبارت Switch با هیچ یک از عبارات Case مطابقت نداشت، آنگاه بلوک کد کلمه ی کلیدی default اجرا خواهد شد.
مثال- در مثال زیر اگر عدد بازگشتی از تابع getDay() اعداد ۰ یا ۶ نبود، آنگاه بلوک کد default اجرا خواهد شد:
1 2 3 4 5 6 7 8 9 10 | 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 لازم نیست که حتما آخرین مورد در یک بلوک سوئیچ باشد:
1 2 3 4 5 6 7 8 9 10 | 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 در انتهای default از break استفاده کنید.
گاهی اوقات ممکن است بخواهید برای دو یا چند مورد Case یک بلوک کد اجرا شود.
در این مثال موارد ۴ و ۵ یک بلوک کد واحد و ۰ و ۶ نیز یک بلوک کد دیگر را اجرا می کنند:
1 2 3 4 5 6 7 8 9 10 11 12 | 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"; } |
اگر چندین مورد case با مقدار شرط مطابقت داشته باشد اولین case اجرا خواهد شد.
اگر هیچ مورد case یافت نشد، برنامه به برچسب default ادامه می یابد.
و اگر هیچ مورد default یافت نشد، برنامه بعد از سوئیچ به دستورات بعدی ادامه می دهد.
موارد سوئیچ استفاده از مقایسه دقیق تر (===).
مقادیر باید با همان نوع نیز مطابقت داشته باشند.
یک مقایسه دقیق فقط در صورتی می تواند صحیح باشد که عملگرها نیز از همان نوع باشند.
در این مثال برای x تطابقی وجود ندارد:
1 2 3 4 5 6 7 8 9 10 11 | var x = "0"; switch (x) { case 0: text = "Off"; break; case 1: text = "On"; break; default: text = "No value found"; } |
دستور Switch در جاوا اسکریپت به عنوان دستوری پر کاربرد برای بلوک های شرطی چندگانه و طولانی کار را ساده تر می کند، همچنین این دستور در زبان های برنامه نویسی دیگر نیز بسیار استفاده می شود.