جملة switch يمكنها استبدال العديد من جمل `if.
تعطي طريقة أفضل لمقارنة متغير مقابل مجموعة من القيم.
طريقة الكتابة
جملة switch تحتوي على case واحدة أو أكثر وحالة إفتراضية إختيارية.
مثل هذا:
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
- قيمة
xيتم إختبار تساويها مع أولcase(value1) ثم تتنتقل إلى (value2) وهكذا. - إذا وجد تساوي تبدأ
switchبتنفيذ الكود ابتداءًا من هذه الcaseحتى أقربbreak(أو نهايةswitch). - إذا لم تطابق أي حالة يتم تنفيذ الكود بداخل
defaultإذا وجدت.
مثال
مثال على switch (تم نحديد الكود الذي سينفذ):
تبدأ switch بمقارنة قيمة a بدايةً من أول case التي هي 3. لا تطابق.
ثم 4. وهنا يحدث تطابق ويبدأ التنفيذ من case 4 حتى أقرب break.
إذا لم يوجد break يستمر تنفيذ case التالية بدون فحص الشرط.
مثال بدون break:
في هذا المثال سيتم تنفيذ ثلاثة أوامر alert:
alert( 'تمامًا!' );
alert( 'كثير جدًا' );
alert( "لا أعرف هذه القيمة" );
switch/caseتجميع “case”
يمكن تجميع العديد من case التي تتشارك في نفس الأوامر.
مثلًا إذا أردنا تنفيذ نفس الأوامر في case 3 و case 5:
الآن كل من 3 و 5 يظهرون الرسالة.
إمكانية تجميع الحالات هي تأثير جانبي لطريقة عمل switch/case بدون break. هنا يبدأ التنفيذ من case 3 في السطر (*) وينتقل إلى case 5 لعدم وجود break.
الأنواع مهمة
عملية التساوي هي عملية حادة فيجب أن تكون القيم من نفس النوع ليتم التطابق.
على سبيل المثال لنأخذ البرنامج التالي:
- إذا أدخلنا
0,1يتم تنفيذ أولalert. - إذا أدخلنا
2يتم تنفيذ ثانيalert. - ولكن إذا أدخلنا
3تكون نتيجةpromptهي النص"3"الذي لا يطابق===الرقم3. لذلك لن يتم تنفيذ الأوامر في هذهcase 3! وسيتم تنفيذdefault.