14- آموزش جاوااسکریپت | کار با دستور Switch
در این آموزش با دستور switch در جاوااسکریپت آشنا میشویم. یاد میگیریم چگونه بهجای استفاده از چندین if/else if، از switch برای بررسی چند حالت مختلف استفاده کنیم. همچنین با default، نقش break و یک مثال کاربردی برای تشخیص روز هفته آشنا خواهیم شد.
بعد از یادگیری دستورات شرطی if/else، حالا نوبت به یکی دیگر از ابزارهای کنترل جریان در جاوااسکریپت میرسد: دستور switch.
دستور switch زمانی مفید است که بخواهیم مقدار یک متغیر را با چندین حالت مختلف مقایسه کنیم. در چنین شرایطی، استفاده از switch معمولاً از زنجیرههای طولانی if/else if خواناتر و منظمتر است.
دستور Switch چیست؟
دستور switch یک مقدار را دریافت میکند و آن را با چند case مختلف مقایسه میکند. اگر یکی از caseها با مقدار موردنظر مطابقت داشته باشد، کد مربوط به آن اجرا میشود.
ساختار کلی:
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
default:
// code block
}
اجزای اصلی:
expression: مقداری که قرار است بررسی شودcase: حالتهای مختلف برای مقایسهbreak: خروج ازswitchپس از اجرای یکcasedefault: اگر هیچcaseی مطابقت نداشت، این بخش اجرا میشود
مثال ساده با رنگها
فرض کنید متغیری به نام color داریم و میخواهیم بر اساس مقدار آن، پیام مناسب را در کنسول چاپ کنیم.
let color = 'red';
switch (color) {
case 'red':
console.log('Color is red');
break;
case 'blue':
console.log('Color is blue');
break;
default:
console.log('Color is not red or blue');
break;
}
نتیجه:
- اگر مقدار
colorبرابر'red'باشد، خروجی میشود:
Color is red
- اگر مقدار
colorبرابر'blue'باشد:
Color is blue
- اگر مقدار
colorمثلاً'yellow'باشد:
Color is not red or blue
نقش break در Switch
استفاده از break در پایان هر case بسیار مهم است.
اگر break را ننویسیم، جاوااسکریپت اجرای caseهای بعدی را هم ادامه میدهد. به این رفتار Fall-through گفته میشود.
مثال:
let color = 'red';
switch (color) {
case 'red':
console.log('Color is red');
case 'blue':
console.log('Color is blue');
default:
console.log('Color is not red or blue');
}
در این حالت، چون بعد از case 'red' از break استفاده نشده، علاوه بر پیام اول، بخشهای بعدی هم اجرا میشوند.
چه زمانی از Switch استفاده کنیم؟
اگر فقط یک یا دو شرط ساده دارید، if/else کاملاً مناسب است.
اما اگر قرار باشد یک مقدار را با چندین حالت مختلف مقایسه کنید، switch معمولاً انتخاب بهتری است؛ چون:
- کد خواناتر میشود
- ساختار منظمتری دارد
- مدیریت چندین حالت مختلف راحتتر است
مثال کاربردی: تشخیص روز هفته
یکی از مثالهای کاربردی switch، تبدیل عدد روز به نام روز هفته است.
در جاوااسکریپت میتوان با new Date().getDay() شماره روز هفته را دریافت کرد. این متد عددی بین 0 تا 6 برمیگرداند:
0= Sunday1= Monday2= Tuesday3= Wednesday4= Thursday5= Friday6= Saturday
نمونه کد:
let day;
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;
}
console.log(`Today is ${day}`);
خروجی نمونه:
Today is Sunday
البته خروجی واقعی به روزی بستگی دارد که کد را اجرا میکنید.
تفاوت Switch و If/Else
هر دو برای تصمیمگیری در برنامه استفاده میشوند، اما کاربرد آنها کمی متفاوت است:
از if/else استفاده کنید وقتی:
- شرطها پیچیده هستند
- نیاز به مقایسههای ترکیبی دارید
- از عملگرهایی مثل
>,<,&&,||استفاده میکنید
از switch استفاده کنید وقتی:
- فقط یک متغیر را بررسی میکنید
- چندین مقدار ثابت برای مقایسه دارید
- میخواهید کد تمیزتر و خواناتر باشد
جمعبندی
در این آموزش با دستور switch در جاوااسکریپت آشنا شدیم و دیدیم که:
switchجایگزین مناسبی برای چندینif/else ifاست- هر
caseیک حالت مشخص را بررسی میکند breakبرای جلوگیری از اجرایcaseهای بعدی ضروری استdefaultزمانی اجرا میشود که هیچ حالتی مطابقت نداشته باشد- از
switchمیتوان در مثالهای کاربردی مثل تشخیص روز هفته استفاده کرد
در آموزش بعدی، به سراغ توابع در جاوااسکریپت میرویم و با Function Declaration و Function Expression آشنا خواهیم شد.