دستور switch در جاوااسکریپت
خوش اومدین به سی و دومین جلسه از دوره آموزش جاوا اسکریپت. ما در جلسه قبلی با دستور شرطی if آشنا شدیم و به موفق شدیم که وضعیت های مختلف رو مدیریت کنیم. گفتیم اگه تعداد شرط ها زیاد باشه استفاده از if اصولی نیست و باید از دستور switch استفاده کنیم. توی این جلسه میخوایم در مورد دستور swtich در جاوااسکریپت با همدیگه صحبت کنیم و با اون آشنا بشیم.
در جاوا اسکریپت، دستور switch یک ساختار شرطی چندگانه است که به شما امکان میدهد بین چندین حالت مختلف برنامه تصمیم بگیرید و عملیات متفاوتی را انجام دهید. این دستور معمولاً برای بررسی مقدار یک عبارت یا متغیر استفاده میشود.
ساختار کلی دستور switch در جاوااسکریپت
switch (expression) {
case value1:
// عملیات مربوط به value1
break;
case value2:
// عملیات مربوط به value2
break;
case value3:
// عملیات مربوط به value3
break;
// میتوانید case های بیشتری اضافه کنید
default:
// عملیات پیشفرض در صورت عدم تطابق با هیچ یک از case ها
break;
}
در این ساختار، عبارت expression
مقداری است که برای آن میخواهید شرایط را بررسی کنید. هر case یک مقدار خاص را بررسی میکند و در صورت تطابق، بلافاصله دستورات مربوط به آن case اجرا میشود. بلافاصله پس از هر case، باید دستور break
قرار داده شود تا اجرای برنامه از switch خارج شود.
دستور default
اختیاری است و در صورتی که هیچ یک از مقادیر case با expression مطابقت نداشته باشد، عملیات مربوط به default اجرا میشود.
برای روشنتر شدن، نمونهای از استفاده از دستور switch را در ادامه نشان میدهم:
let day = 2;
let dayName;
switch (day) {
case 1:
dayName = "شنبه";
break;
case 2:
dayName = "یکشنبه";
break;
case 3:
dayName = "دوشنبه";
break;
case 4:
dayName = "سهشنبه";
break;
case 5:
dayName = "چهارشنبه";
break;
case 6:
dayName = "پنجشنبه";
break;
case 7:
dayName = "جمعه";
break;
default:
dayName = "مقدار ورودی نامعتبر است";
break;
}
console.log(dayName); // خروجی: یکشنبه
در این مثال، مقدار متغیر day
بررسی شده و با توجه به مقدار آن، مقدار متناظر در متغیر dayName
تعیین میشود و سپس آن را در کنسول چاپ میکنیم.
اگر تمامی case ها در switch statement یک عبارت break
نداشته باشند، اجرای برنامه از case مطابقتیافته شروع شده و تمامی case های زیر آن نیز بدون بررسی مقدارشان اجرا میشوند. این مفهوم به عنوان fall-through شناخته میشود.
در صورتی که میخواهید در صورت مطابقت با یک case، همه case های بعدی نیز اجرا شوند، میتوانید از عدم استفاده از break
پس از هر case استفاده کنید. به عنوان مثال:
let day = 2;
let dayNames = [];
switch (day) {
case 1:
dayNames.push("شنبه");
case 2:
dayNames.push("یکشنبه");
case 3:
dayNames.push("دوشنبه");
case 4:
dayNames.push("سهشنبه");
case 5:
dayNames.push("چهارشنبه");
case 6:
dayNames.push("پنجشنبه");
case 7:
dayNames.push("جمعه");
default:
dayNames.push("مقدار ورودی نامعتبر است");
}
console.log(dayNames); // خروجی: ["یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه"]
کلمه کلیدی break
در این مثال، متغیر day
بررسی شده و با توجه به مقدار آن، مقادیر متناظر در آرایه dayNames
اضافه میشوند. بدون استفاده از break
در هر case، اجرای برنامه ادامه مییابد و تمامی case های زیر مطابقتیافته نیز اجرا میشوند.
باید توجه داشته باشید که استفاده از fall-through در switch statement باید با احتیاط صورت گیرد و در صورت نیاز و درک کامل از عملکرد آن استفاده شود، تا از ایجاد خطاهای ناخواسته در برنامه جلوگیری شود.
به علاوه، در دستور switch میتوانید یک مقدار دیفالت پیشفرض را مشخص کنید که در صورتی که هیچ یک از case ها با مقدار عبارت expression مطابقت نداشتند، اجرا خواهد شد. این قسمت اختیاری است و شما میتوانید بدون استفاده از آن استفاده کنید.
اگر دستور break در یک case حذف شود، اجرای دستورات به case بعدی ادامه خواهد یافت و اجرای case های دیگر نیز انجام خواهد شد، بدون در نظر گرفتن مقدار آنها. این روش شناخته شده به عنوان fall-through است.
به عنوان مثال:
let day = 2;
let dayName;
switch (day) {
case 1:
dayName = "شنبه";
break;
case 2:
dayName = "یکشنبه";
// break اینجا حذف شده است
case 3:
dayName = "دوشنبه";
break;
default:
dayName = "مقدار ورودی نامعتبر است";
}
console.log(dayName); // خروجی: "دوشنبه"
در این مثال، وقتی که متغیر day
مقدار 2 دارد، اجرای برنامه به case 2 میرسد و مقدار متغیر dayName
به “یکشنبه” تنظیم میشود. سپس به case بعدی (case 3) میرود و مقدار dayName
را به “دوشنبه” تغییر میدهد. سپس با اجرای دستور break
از switch خارج میشود.
بنابراین، خروجی متغیر dayName
در این حالت “دوشنبه” خواهد بود.