يرتبط بيان التبديل ارتباطًا وثيقًا بالبيان if ، وهو أيضًا عبارة عن بيان تحكم في العملية شائع الاستخدام في لغات البرمجة الأخرى. ومع ذلك ، فإن مباريات التبديل هي أنماط متطابقة. إذا لم تنتبه إلى هذه التفاصيل ، فغالبًا ما ترتكب أخطاء عند كتابة البرامج.
شفرة:
var n = '5' ؛ switch (n) {case 5: ALERT ('Execute Case Branch') ؛ Break ؛ Default: ALERT ('تنفيذ الفرع الافتراضي') ؛}نتيجة:
قد يعتقد الكثير من الناس عن طريق الخطأ أن البرنامج أعلاه سيذهب إلى فرع العلبة ، ولكن في النهاية ، سيذهب إلى الفرع الافتراضي. أليست متساوية؟ دعونا نستخدم عبارة if لنرى.
شفرة:
var n = '5' ؛ if (n == 5) {Alert ('true branch') ؛} else {Alert ('false branch') ؛}نتيجة:
يمكن مطابقتها في بيان if ، ولكن لماذا لا يمكن مطابقتها في بيان التبديل؟
وذلك لأن الحالة في عبارة التبديل تستخدم وضع التقارب ، وهو ما يعادل استخدام ثلاث علامات متساوية في IF. دعنا نعيد كتابة رمز القضية
شفرة:
var n = '5' ؛ switch (n) {case '5': // أعد كتابة الحالة الأصلية 5 في حالة '5'alert (' تنفيذ فرع الحالة ') ؛ break ؛ الافتراضي: التنبيه (' تنفيذ الفرع الافتراضي ') ؛}نتيجة:
بعد إعادة كتابته ، يمكنك الذهاب إلى فرع العلبة ، تمامًا مثلما نستخدم ثلاث علامات متساوية في إذا
شفرة:
var n = '5' ؛ if (n === 5) {Alert ('true branch') ؛} else {Alert ('false branch') ؛}نتيجة:
نظرًا لاستخدام التقارب ، فإن السلسلة 5 لا تساوي الرقم 5 ، وذهب الفرع الخاطئ.
يوضح المثال أعلاه أن المشكلة التي يجب الانتباه إليها عند استخدام نمط مطابقة متطابق في التبديل ، خاصةً عندما تتطابق الأرقام.