دستور switch در JavaScript
از دستور switch برای انجام اقدامات مختلف در شرایط مختلف استفاده می کنیم. این دستور عملکردی مشابه if و else if دارد.
به طور کلی، استفاده از دستور switch به جای چندین شرط if-else، کد را خوانا تر و مرتب تر میکند.
نکته: این دستور مقدار یک متغیر را در چندین حالت مختلف مقایسه می کند و برای هر حالت بلوک کد متفاوتی اجرا می کند.
switch (expression) {
case x:
// یک بلوک کد
break;
case y:
// یک بلوک کد
break;
default:
// یک بلوک کد
}
فرآیند عملکرد switch :
- switch یک عبارت (expression) را دریافت میکند.
- عبارت دریافت شده را به ترتیب در هر case مقایسه میکند.
- اگر تطابقی در case پیدا شود، بلوک کد مربوط اجرا میشود.
- اگر هیچکدام از مقادیر case تطابق نداشته باشند، بلوک کد default (اختیاری) اجرا میشود.
switch (new Date().getDay()) {
case 0:
day = "یک شنبه";
break;
case 1:
day = "دو شنبه";
break;
case 2:
day = "سه شنبه";
break;
case 3:
day = "چهار شنبه";
break;
case 4:
day = "پنج شنبه";
break;
case 5:
day = "جمعه";
break;
case 6:
day = "شنبه";
}
نکته: متد ()getDay ایام هفته را به صورت عدد (از 0 تا 6) بر می گرداند. (یکشنبه = 0، دوشنبه = 1، ...)
نکته: در ساختار switch، اگر چندین case با عبارت مطابقت داشته باشند، تنها اولین case، اجرا میشود.
break در switch
دستور break باعث میشود، اجرا switch، شکسته شود و ادامه switch اجرا نشود.
نکته: اگر در case تطبیق شده از break استفاده نکنیم، بقیه case ها و default، به صورت پایین رو (Fall-through) بدون نیاز به تطبیق اجرا میشود.
switch (color) {
case "قرمز":
text += "رنگ مورد علاقه من قرمز است. <br/>";
case "آبی":
text += "رنگ مورد علاقه من آبی است. <br/>";
case "سبز":
text += "رنگ مورد علاقه من سبز است. <br/>";
default:
text += "من رنگ مورد علاقه ندارم. <br/>";
}
default در switch
دستور default، اختیاری است و در صورت عدم تطابق عبارات case ها اجرا شود.
switch (0) {
case 1:
text = "عدد 1 است.";
break;
case 2:
text = "عدد 2 است.";
break;
default:
text = "عدد یافت نشد.";
}
مقایسه دقیق
در ساختار switch، از مقایسه دقیق (strict comparison) با استفاده از عملگر (===) استفاده میشود. یعنی علاوه بر بررسی مقدار، نوع داده نیز مطابقت داده می شود.
let x = "0";
switch (x) {
case 0:
text = "خاموش";
break;
case 1:
text = "روشن";
break;
default:
text = "مقداری پیدا نشد!";
}