Switch Case (اختيار من عدة حالات)

5:00 دقائق مجاني
في هذا الدرس ستتعلم كيف تختار من عدة حالات بطريقة مرتبة باستخدام switch بدل تكرار if/else

أحيانًا يكون عندنا متغير واحد وله عدة قيم محتملة (مثل رقم يوم، نوع مستخدم، لون، خيار من قائمة). كتابة if/else كثيرة تصبح مزعجة وغير مرتبة. هنا يأتي دور switch.

متى نستخدم switch؟ ومتى نستخدم if؟

استخدم switch ✅

  • عندك متغير واحد وتريد فحص قيم كثيرة
  • القيم واضحة مثل: 1، 2، 3 أو "admin" و "user"
  • تبغى كود مرتب وسهل القراءة

استخدم if ✅

  • عندك شروط معقدة (أكبر/أصغر، شروط متعددة)
  • تحتاج && و || كثير
  • الشرط ليس مجرد مساواة لقيمة واحدة

شكل switch الأساسي

هذا شكل switch:

switch (value) {
  case "A":
    // نفّذ هذا إذا كانت value = "A"
    break;

  case "B":
    // نفّذ هذا إذا كانت value = "B"
    break;

  default:
    // إذا ولا حالة طابقت
}

مهم جدًا

  • case = حالة ممكنة
  • break = يوقف التنفيذ عند أول حالة تطابق
  • default = مثل else (الخيار الأخير)

مثال عملي: رقم اليوم إلى اسم اليوم

تخيل عندنا رقم من 1 إلى 7 يمثل اليوم، ونريد تحويله لاسم اليوم.

let day = 5;
let dayName = "";

switch (day) {
  case 1:
    dayName = "الأحد";
    break;
  case 2:
    dayName = "الإثنين";
    break;
  case 3:
    dayName = "الثلاثاء";
    break;
  case 4:
    dayName = "الأربعاء";
    break;
  case 5:
    dayName = "الخميس";
    break;
  case 6:
    dayName = "الجمعة";
    break;
  case 7:
    dayName = "السبت";
    break;
  default:
    dayName = "رقم يوم غير صحيح";
}

console.log(dayName);

ليش هذا المثال مفيد؟

لأنك بدل ما تكتب if/else كثيرة، جمعت كل الحالات في مكان واحد واضح.

مثال واقعي: صلاحيات المستخدم حسب النوع

تخيل عندك نوع مستخدم: admin أو editor أو user. تريد عرض رسالة مختلفة لكل نوع.

let role = "editor";

switch (role) {
  case "admin":
    console.log("أهلاً مدير النظام 👑");
    break;

  case "editor":
    console.log("أهلاً بالمحرر ✍️");
    break;

  case "user":
    console.log("أهلاً بك 👋");
    break;

  default:
    console.log("نوع المستخدم غير معروف");
}

لاحظ: switch هنا مناسب جدًا لأننا نقارن نفس المتغير (role) مع قيم ثابتة.

حالة خاصة: دمج أكثر من case لنفس النتيجة

أحيانًا تريد أكثر من قيمة تؤدي لنفس النتيجة. هنا نكتب case فوق بعض بدون break:

let grade = "B";

switch (grade) {
  case "A":
  case "B":
    console.log("مستواك ممتاز 👏");
    break;

  case "C":
    console.log("مستواك جيد");
    break;

  default:
    console.log("حاول مرة أخرى");
}

إيش صار هنا؟

إذا grade = A أو B… البرنامج يطبع نفس الرسالة ثم يتوقف عند break.

أخطاء شائعة في switch (انتبه!)

  • نسيان break مما يجعل البرنامج يكمل حالات أخرى (Fall-through)
  • كتابة قيم case بنوع مختلف (مثل رقم بدل نص أو العكس)
  • نسيان default (مهم جدًا لمعالجة الحالات غير المتوقعة)

تذكير سريع:

switch يستخدم مقارنة “صارمة” في حالات كثيرة، لذلك انتبه لنوع البيانات (Number vs String).

ماذا بعد هذا الدرس؟

الدرس القادم: الحلقات (Loops) — for / while

سنبدأ نفهم كيف نكرر الأوامر بدل ما نكتب نفس الكود 50 مرة.