سوییچ (Switch)
«سوییچ جاوااسکریپت» برای انتخاب بین چند حالت است. سوییچ جاوااسکریپت وقتی یک مقدار با یکی از caseها برابر شد، همان بلوک کد را اجرا می کند. مثل منوی بازی که با شماره مرحله، متن مناسب را نشان می دهد.
سینتکس سوییچ جاوااسکریپت
در «سوییچ جاوااسکریپت»، یک «عبارت (Expression)» یکبار ارزیابی می شود و با مقدار هر case مقایسه می شود. اگر برابر بود، همان کد اجرا می شود.
switch (expression) {
case x: {
// code block;
break;
}
case y: {
// code block;
break;
}
default: {
// code block;
}
}
مثال: نام روز هفته
تابع getDay() عدد روز را می دهد. سپس با سوییچ جاوااسکریپت نام روز را می سازیم.
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
break اجرای ادامه caseها را متوقف می کند. اگر نگذاری، «ریزش (Fall-through)» می شود و case بعدی هم اجرا می شود.
default به عنوان پشتیبان
اگر هیچ case برابر نبود، default اجرا می شود. default اختیاری است.
let text;
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 لازم نیست آخر باشد، ولی اگر وسط بود، یادت نرود break بگذاری.
let text;
switch (new Date().getDay()) {
default: {
text = "Looking forward to the Weekend";
break;
}
case 6: {
text = "Today is Saturday";
break;
}
case 0: {
text = "Today is Sunday";
}
}
اشتراک کد بین caseها
گاهی چند case یک کار یکسان دارند. آن ها را پشت سر هم بنویس تا به یک بلوک برسند.
let text;
switch (new Date().getDay()) {
case 4:
case 5: {
text = "Soon it is Weekend";
break;
}
case 0:
case 6: {
text = "It is Weekend";
break;
}
default: {
text = "Looking forward to the Weekend";
}
}
مقایسه سخت گیرانه (Strict ===)
سوییچ جاوااسکریپت از مقایسه سخت گیرانه استفاده می کند. یعنی نوع و مقدار باید یکی باشد.
let x = "0";
let text;
switch (x) {
case 0: {
text = "Off";
break;
}
case 1: {
text = "On";
break;
}
default: {
text = "No value found";
}
}
گام های عملی
- یک «expression» مشخص کن؛ مثل number یا string.
- caseهای لازم را بنویس و break بگذار.
- در پایان، یک default برای حالت های دیگر.
نکته: اگر حالت ها کم است، if else ساده تر است. اگر حالت ها زیاد است، «سوییچ جاوااسکریپت» خواناتر می شود. برای مرور مفاهیم پایه به شرط ها و برای نوع های منطقی به Boolean سر بزن.
جمع بندی سریع
- سوییچ جاوااسکریپت با === مقایسه می کند.
- برای هر case یادت نرود break بگذاری.
- default را پشتیبان قرار بده.
- چند case می توانند یک کد مشترک داشته باشند.
- برای حالت های زیاد، سوییچ خواناتر است.