JavaScript / اتخاذ القرار

جملة switch

اختر بين قيم كثيرة لمتغير واحد بجملة switch بدل سلسلة else if طويلة.

عندما نقارن متغيرًا واحدًا بقيم كثيرة تصبح سلسلة else if طويلة ومتكررة. جملة switch تكتب نفس الفكرة بشكل أوضح: قيمة واحدة نفحصها، وقائمة من الحالات المحتملة.

JavaScript
let day = "Sunday";

switch (day) {
  case "Saturday":
    console.log("Go to lessons");
    break;
  case "Sunday":
    console.log("Go shopping");
    break;
  default:
    console.log("Go to school");
    break;
}
وحدة التحكم
Go shopping
بـ if … else ifبـ switch
if (day == "Saturday")case "Saturday":
else if (day == "Sunday")case "Sunday":
elsedefault:

يأخذ الكمبيوتر القيمة بين قوسي switch ويقارنها بكل case من أعلى لأسفل. عند أول حالة مطابقة ينفّذ الأسطر التي بعدها، وكلمة break تُخرجه من الجملة كلها.

إذا نسيت break لا يتوقف التنفيذ، بل يكمل إلى الحالة التالية ويطبع ما فيها أيضًا. هنا day تساوي "Saturday" لكن يُطبع سطران:
JavaScript
let day = "Saturday";

switch (day) {
  case "Saturday":
    console.log("Go to lessons");
  case "Sunday":
    console.log("Go shopping");
    break;
}
وحدة التحكم
Go to lessons
Go shopping

الحالة default

تُنفَّذ default عندما لا تطابق القيمة أي حالة، مثل else في جملة if. نكتبها عادة في آخر الجملة:

JavaScript
let bloodType = "Unknown";

switch (bloodType) {
  case "A":
    console.log("Today's fortune is decent");
    break;
  case "B":
    console.log("Today's fortune is excellent!");
    break;
  default:
    console.log("Let's find out your blood type!");
    break;
}
وحدة التحكم
Let's find out your blood type!

عملية حسابية داخل switch

بين قوسي switch يمكن كتابة عملية حسابية، مثل باقي القسمة %. عند توزيع 20 قطعة دونات على 3 أشخاص يكون الباقي 0 أو 1 أو 2، ولكل باقٍ تصرّف مختلف:

JavaScript
let donuts = 20;

switch (donuts % 3) {
  case 0:
    console.log("Divided equally");
    break;
  case 1:
    console.log("Give it to Mom");
    break;
  case 2:
    console.log("Give it to Mom and Dad");
    break;
}
وحدة التحكم
Give it to Mom and Dad
بعد كل case نقطتان : وليس فاصلة منقوطة. والقيم النصية بين علامتي تنصيص case "A":، أما الأرقام فبدونها case 0:.

تدريبات

1أكمل الفراغتدريب المنهج

أكمل الفراغات لتصبح جملة switch على المتغير day: "Saturday" تطبع Go to lessons، و"Sunday" تطبع Go shopping، وغير ذلك يطبع Go to school.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let day = "Sunday";

___ (___) {
  ___ "Saturday":
    console.log("Go to lessons");
    ___;
  case "Sunday":
    console.log("Go shopping");
    break;
  ___:
    console.log("Go to school");
    break;
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2اكتب البرنامجتدريب المنهج

أكمل جملة switch على المتغير letter: القيمة "A" تطبع Well done!، و"B" تطبع Keep up the good work، و"C" تطبع Let's try a little harder.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let letter = "B";

switch ( ) {

}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3عدّل البرنامجتدريب المنهج

أضف حالة default تطبع The notation is incorrect عندما لا تطابق القيمة أي حالة.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let letter = "D";

switch (letter) {
  case "A":
    console.log("Well done!");
    break;
  case "B":
    console.log("Keep up the good work");
    break;
  case "C":
    console.log("Let's try a little harder");
    break;
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4اكتب البرنامجتدريب المنهج

باستخدام switch على باقي قسمة number على 3: الباقي 0 يطبع Group A، و1 يطبع Group B، و2 يطبع Group C.

تلميحاكتب number % 3 بين قوسي switch.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let number = 20;

switch ( ) {

}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5اكتب البرنامجتدريب المنهج

باستخدام switch على باقي قسمة dayCount على 7: الباقي 0 يطبع Let's eat a hamburger!، والباقي 4 يطبع Let's eat steak!

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let dayCount = 11;

switch ( ) {

}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6عدّل البرنامجتدريب إضافي

طلبت عصيرًا لكن البرنامج يطبع سطرين. صحّحه ليطبع Orange juice: 15 pounds فقط.

تلميحأي حالة ينقصها break؟
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let order = "juice";

switch (order) {
  case "tea":
    console.log("Tea: 10 pounds");
    break;
  case "juice":
    console.log("Orange juice: 15 pounds");
  case "cake":
    console.log("Cake: 25 pounds");
    break;
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

في مصعد المدرسة المتغير floor = 2. اكتب switch: 0 يطبع Reception، و1 يطبع Library، و2 يطبع Computer lab، وأي رقم آخر يطبع No such floor.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let floor = 2;
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • switch (x) { case v: … break; } تقارن متغيرًا واحدًا بقيم كثيرة.
  • بدون break يكمل التنفيذ إلى الحالة التالية.
  • default: تُنفَّذ إذا لم تطابق أي حالة، ويمكن كتابة عملية مثل n % 3 داخل القوسين.