تکه کد Switch

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مرجع جاوا اسکریپت

عبارت switch برای انجام عملیات‌های متفاوت در شرایط‌های متفاوت استفاده می‌شود. [۱]

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

شیوهٔ نوشتار

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

شیوه عمل این عبارت به صورت زیر است:

  • عبارت Switch یک بار ارزیابی می‌شود
  • مقدار عبارت با هر یک از Caseها مقایسه می‌شود
  • اگر با هر یکی از Caseها نتیجه برابر بود، بلاک کد مربوط به آن case اجرا می‌شود

مثال

متد getDay() شماره روز را به صورت عددی بین ۰ تا ۶ برمی‌گرداند.

(یکشنبه = ۰، دوشنبه = ۱، سه شنبه =۲ ، ....)

مثال زیر از شماره روز برای به دست آوردن نام روز استفاده می‌کند:

 1 switch (new Date().getDay()) {
 2   case 0:
 3     day = "Sunday";
 4     break;
 5   case 1:
 6     day = "Monday";
 7     break;
 8   case 2:
 9      day = "Tuesday";
10     break;
11   case 3:
12     day = "Wednesday";
13     break;
14   case 4:
15     day = "Thursday";
16     break;
17   case 5:
18     day = "Friday";
19     break;
20   case 6:
21     day = "Saturday";
22 }

نتیجه متغیر day برابر خواهد بود با:

Tuesday


مشاهدهٔ نتیجه


کلمه کلیدی break

زمانی که جاوا اسکریپت به کلمه کلیدی break می‌رسد، از بلاک switch خارج می‌شود.

این کلمه موجب متوقف شدن اجرای کد درون بلاک می‌شود.

استفاده از کلمه کلیدی break در آخرین case ضروری نیست. جاوا اسکریپت از بلاک Switch در آخرین case تحت هر شرایطی بعد از اجرای کد آن خارج خواهد شد.

توجه داشته باشید: اگر شما عبارت break را ننویسید، Case بعدی حتی در صورت اینکه با شرط دستور Switch همخوانی نداشته باشد، اجرا خواهد شد.

کلمه کلیدی default

کلمه کلیدی default بلاک کدی را می‌بایست در صورت برقرار نبودن هیچ‌یک از Caseها اجرا شود را مشخص می‌کند.

مثال

متد default شماره روز را به صورت عددی بین ۰ تا ۶ برمی‌گرداند.

اگر امروز چه شنبه (۶) باشد یا چه یکشنبه (۰)، یک پیام پیشفرض می‌نویسد:

 1 switch (new Date().getDay()) {
 2   case 6:
 3     text = "Today is Saturday";
 4     break;
 5   case 0:
 6     text = "Today is Sunday";
 7     break;
 8   default:
 9     text = "Looking forward to the Weekend";
10 }


مشاهدهٔ نتیجه


نتیجه متغیر text برابر خواهد بود با:

Looking forward to the Weekend

Case مربوط به کلمه کلیدی default لزوم نباید آخرین بلاک کد در دستور Switch باشد:

مثال

 1 switch (new Date().getDay()) {
 2   default:
 3     text = "Looking forward to the Weekend";
 4     break;
 5   case 6:
 6     text = "Today is Saturday";
 7     break;
 8   case 0:
 9     text = "Today is Sunday";
10 }


مشاهدهٔ نتیجه


اگر بلاک مربوط به کلمه default آخرین case در بلاک دستور switch نباشد، حتماً به یاد داشته باشید که پایان case عبارت Default از کلمه break استفاده کنید.

بلاک های کد مشترک

برخی اوقات شما می‌خواهید که Case های مختلفی در دستور Switch از کد مشترک استفاده کنند.

در این مثال case شماره ۴ و ۵ دارای بلاک کد مشترک هستند و case صفر و شش نیز بلاک کد مشترک دیگری دارند:

مثال

 1 switch (new Date().getDay()) {
 2   case 4:
 3   case 5:
 4     text = "Soon it is Weekend";
 5     break;
 6   case 0:
 7   case 6:
 8     text = "It is Weekend";
 9     break;
10   default:
11     text = "Looking forward to the Weekend";
12 }


مشاهدهٔ نتیجه


جزئیات عمل Switching

اگر چندین Case با مقدار یک Case برابری کند، بلاک اولین Case انتخاب می‌شود.

اگر هیچ‌یک از Case ها نیز برقرار نباشد، برنامه بلاک مربوط به کلمه default را اجرا می‌کند.

اگر دستور default نوشته نشده باشد، برنامه سایر کدها بعد از دستور switch را اجرا خواهد کرد.

مقایسهٔ سخت گیرانه

دستور Switch از مقایسهٔ سخت گیرانه (===) استفاده می‌کند.

برای اینکه Case مورد نظر برقرار باشد، نوع و مقدار آن باید برابر باشد.

مقایسه سخت گیرانه در صورتی تنها می‌تواند true یا برقرار باشد که عملگرها از یک نوع باشند.

در مثال زیر، هیچ‌یک از Case ها برای متغیر x اجرا نخواهند شد:

مثال

 1 var x = "0";
 2 switch (x) {
 3   case 0:
 4     text = "Off";
 5     break;
 6   case 1:
 7     text = "On";
 8     break;
 9   default:
10     text = "No value found";
11 }


مشاهدهٔ نتیجه


تمرینات جاوا اسکریپت

Time2wait.svg ساخت نمونه مثال این بخش در دست اقدام است.



منابع آموزشی