javascriptswitchدستور switch در جاوااسکریپت
دستور switch در جاوااسکریپت یک مقدار را با caseها تطبیق میدهد؛ نقش break، default و مقایسهٔ بدون تبدیل نوع را در مثال وضعیت سفارش ببینید.
مفهوم به زبان ساده
وقتی یک مقدار مشخص، مانند وضعیت سفارش، چند حالت نامگذاریشده دارد، switch میتواند انتخاب مسیر را خوانا کند. عبارت داخل پرانتز یکبار ارزیابی میشود؛ سپس caseها برای یافتن مقدار برابر بررسی میشوند. این تطبیق مانند === است و تبدیل نوع انجام نمیدهد؛ برای نمونه case 1 با رشتهٔ '1' تطبیق ندارد.
اجرای بدنه از case تطبیقیافته شروع میشود، اما خودکار با رسیدن به case بعدی متوقف نمیشود. break از switch خارج میشود. حذف ناخواستهٔ آن میتواند چند پیام یا چند تغییر پشت سر هم ایجاد کند. گاهی این ادامهدادن عمدی است؛ مثلاً دو case پشت سر هم میتوانند به یک بدنهٔ مشترک برسند. چنین تصمیمی را واضح نگه دارید و روی آن آزمون بنویسید.
اگر هیچ case تطبیق نداشته باشد، default مسیر جایگزین را تعیین میکند. در مثال، وضعیت ناشناخته پیام مشخص دارد؛ این پیام جای اعتبارسنجی وضعیت در مدل یا سرور را نمیگیرد. switch برای حالتهای گسسته مناسب است؛ برای بازههایی مانند نمرهٔ بزرگتر از ۱۷، #if-else معمولاً روشنتر است. همچنین caseها بهخودیخود محدودهٔ بلوکی جدا نمیسازند؛ اگر در چند case متغیر let یا const همنام لازم دارید، برای بدنهٔ هرکدام آکولاد جدا بگذارید.
کجا به کار میآید؟
- تبدیل وضعیتهای محدود سفارش به پیام فارسی
- انتخاب رفتار بر اساس نام فرمان یا نوع رویداد مشخص
از تعریف تا یک مثال واقعی
const status = 'packed';
let message;
switch (status) {
case 'new':
message = 'سفارش ثبت شد';
break;
case 'packed':
message = 'آمادهٔ ارسال';
break;
case 'sent':
message = 'ارسال شد';
break;
default:
message = 'وضعیت ناشناخته';
}
console.log(message);
آمادهٔ ارسال
این مثال چطور کار میکند؟
status مقدار packed دارد و با case دوم تطبیق پیدا میکند.
متن آمادهٔ ارسال در message قرار میگیرد.
break جلوی ادامهٔ اجرا در case مربوط به sent را میگیرد.
پس از خروج از switch، پیام انتخابشده چاپ میشود.
اشتباه رایج
وجود case بعدی مانند else نیست. بدون break، return یا کنترل خروج مشابه، اجرا ممکن است وارد دستورهای case بعدی شود، حتی اگر مقدار آن case تطبیق نداشته باشد.
این را به خاطر بسپارید
switch یک مقدار را با حالتهای مشخص تطبیق میدهد؛ مسیر خروج و حالت default را آگاهانه طراحی کنید.