سبد خرید

بستن سبد خرید

سبد خرید شما خالی است.

تعداد محصول: 0 کل قیمت: تومان0

دستور شرطی Switch در جاوااسکریپت

دستور شرطی Switch در جاوااسکریپت ، در جلسه قبل راجع به دستور شرطی if گفتیم. اما زمانیکه بین 5 ، 6 یا بلوک کد های بیشتری که حق انتخاب داشته باشیم، دستور if گزینه ی مناسبی نیست. حتی اینکار با دستور if else می توان استفاده کرد، اما باعث ناخوانایی و پیچیده شدن کدها میشود که در اینجا از دستور شرطی به نام Switch استفاده میکنیم.


دستور شرطی Switch در جاوااسکریپت ، در جلسه قبل راجع به دستور شرطی if گفتیم. اما زمانیکه بین 5 ، 6 یا بلوک کد های بیشتری که حق انتخاب داشته باشیم، دستور if گزینه ی مناسبی نیست. حتی اینکار با دستور if else می توان استفاده کرد، اما باعث ناخوانایی و پیچیده شدن کدها میشود که در اینجا از دستور شرطی به نام Switch استفاده میکنیم.

دستور Switch (سوئیچ)

زمانیکه تعداد بلوک کدهای زیادی داشته باشیم و بخواهیم در شرایط مختلف استفاده کنیم بهترین راه استفاده از دستور switch است.

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

مقداری که در داخل پرانتز جلوی switch قرار گرفته است، به عنوان شرطی محسوب میشود. این دستور یک یار محاسبه میشود و نتیجه را با مقادیر جلوی هر case مقایسه میشود و در صورت برابری با هر کدام، دستور زیر آن اجرا میشود و اگر با هیچ case برابر نبود کد مربوط به مقدار default اجرا میشود. به مثال زیر توجه کنید:

switch (new Date().getDay()) {
  case 0:
    day = "Today is Sunday";
    break;
  case 1:
    day = "Today is Monday";
    break;
  case 2:
     day = "Today is Tuesday";
    break;
  case 3:
    day = "Today is Wednesday";
    break;
  case 4:
    day = "Today is Thursday";
    break;
  case 5:
    day = "Today is Friday";
    break;
  case 6:
    day = "Today is Saturday";
}

در مثال بالا در هر زمان که از متد ()new Date().getDay مقدار عدد همان روز برگشت داده میشود. (البته طبق تقویم میلادی) یکشنبه=0 ، دوشنبه=1 ، سه شنبه=2 و…
یعنی قطعه ی کد بالا که در هر روز از هفته اجرا میشود؛ مقدار عددی همان روز برگشت داده میشود و طبق پیغام های ما، همان پیغام را نشان می دهد.

کلمه کلیدی break

وقتی که یک case با نتیجه شرط switch برابر باشد، کد مربوط به آن case اجرا میگردد. کلمه ی break باعث میشود که بقیه کدهای دیگر در خروجی نشان داده نشود و یا اجرا نشود؛ اگه کلمه break را حذف کنیم و زمانیکه کد مربوط به یک case اجرا شود، بقیه کد case ها هم اجرا میشود. به عنوان مثال، کلمه break را از مثال بالا حذف میکنیم:

switch (new Date().getDay()) {
  case 0:
    text = "Today is Sunday";
  case 1:
    text = "Today is Monday";
  case 2:
    text = "Today is Tuesday";
  case 3:
    text = "Today is Wednesday";
  case 4:
    text = "Today is Thursday";
  case 5:
    text = "Today is Friday";
  case 6:
    text = "Today is Saturday";
}

حالا اگه کد فوق را روز سه شنبه (Tuesday) اجرا کنید؛ پیغام های زیر هم نمایش داده میشود.

//   Today is Tuesday
//   Today is Wednesday
//   Today is Thursday
//   Today is Friday
//   Today is Saturday

پس از کلمه کلیدی break برای این مورد استفاده میشود که فقط کد مربوط به همان case در صورت برابری با عبارت اجرا شود.

کلمه کلیدی default

معمولا در آخر همه دستورات switch از کلمه default استفاده میکنیم. اگه عبارت جلوی switch با هیچ case برابر نشد، کد مربوط به default اجرا میگردد.

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 اجرا میشود.

نکته مهم درباره Switch

برای مقایسه های مختلف در دستور switch به این نکته باید توجه کرد که این دستور بر اساس مقدار و نوع داده مقایسه میکند، که در واقع (===) از سه مساوی استفاده میکنیم.

var x = "0";
switch (x) {
  case 0:
    text = "Off";
    break;
  case 1:
    text = "On";
    break;
  default:
    text = "No value found";
}
// output: No value found

مثال بالا چون مقدار x برابر با مقدار 0 از نوع string است. اما جلوی case مقدار عدد 0 از نوع number است پس در نتیجه (0===”0″) برابر نیستند. و قطعه کد مربوط به default اجرا میشود.

  • اگر چندتا case با مقادیر یکسان داخل Switch باشد، فقط اولین case اجرا میشود و بقیه ی case های مشابه در نظر گرفته نمیشود.
  • اگر عبارت switch با هیچ case برابر نباشد، قطعه کد مربوط به default اجرا میگردد.
  • اگر داخل دستور switch از default استفاده نکرده باشیم و مقدار switch با هیچ case برابر نباشد، دستور switch نادیده گرفته میشود.

دیدگاه و پرسش