عندما نقارن متغيرًا واحدًا بقيم كثيرة تصبح سلسلة else if طويلة ومتكررة. جملة switch تكتب نفس الفكرة بشكل أوضح: قيمة واحدة نفحصها، وقائمة من الحالات المحتملة.
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": |
| else | default: |
يأخذ الكمبيوتر القيمة بين قوسي switch ويقارنها بكل case من أعلى لأسفل. عند أول حالة مطابقة ينفّذ الأسطر التي بعدها، وكلمة break تُخرجه من الجملة كلها.
break لا يتوقف التنفيذ، بل يكمل إلى الحالة التالية ويطبع ما فيها أيضًا. هنا day تساوي "Saturday" لكن يُطبع سطران: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. نكتبها عادة في آخر الجملة:
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، ولكل باقٍ تصرّف مختلف:
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:.تدريبات
أكمل الفراغات لتصبح جملة switch على المتغير day: "Saturday" تطبع Go to lessons، و"Sunday" تطبع Go shopping، وغير ذلك يطبع Go to school.
let day = "Sunday";
___ (___) {
___ "Saturday":
console.log("Go to lessons");
___;
case "Sunday":
console.log("Go shopping");
break;
___:
console.log("Go to school");
break;
}اضغط «تشغيل» لترى النتيجة. أكمل جملة switch على المتغير letter: القيمة "A" تطبع Well done!، و"B" تطبع Keep up the good work، و"C" تطبع Let's try a little harder.
let letter = "B";
switch ( ) {
}اضغط «تشغيل» لترى النتيجة. أضف حالة default تطبع The notation is incorrect عندما لا تطابق القيمة أي حالة.
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;
}اضغط «تشغيل» لترى النتيجة. باستخدام switch على باقي قسمة number على 3: الباقي 0 يطبع Group A، و1 يطبع Group B، و2 يطبع Group C.
تلميح
اكتبnumber % 3 بين قوسي switch.let number = 20;
switch ( ) {
}اضغط «تشغيل» لترى النتيجة. باستخدام switch على باقي قسمة dayCount على 7: الباقي 0 يطبع Let's eat a hamburger!، والباقي 4 يطبع Let's eat steak!
let dayCount = 11;
switch ( ) {
}اضغط «تشغيل» لترى النتيجة. طلبت عصيرًا لكن البرنامج يطبع سطرين. صحّحه ليطبع Orange juice: 15 pounds فقط.
تلميح
أي حالة ينقصهاbreak؟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;
}اضغط «تشغيل» لترى النتيجة. في مصعد المدرسة المتغير floor = 2. اكتب switch: 0 يطبع Reception، و1 يطبع Library، و2 يطبع Computer lab، وأي رقم آخر يطبع No such floor.
let floor = 2;
اضغط «تشغيل» لترى النتيجة. النقاط الرئيسية
switch (x) { case v: … break; }تقارن متغيرًا واحدًا بقيم كثيرة.- بدون
breakيكمل التنفيذ إلى الحالة التالية. default:تُنفَّذ إذا لم تطابق أي حالة، ويمكن كتابة عملية مثلn % 3داخل القوسين.