في لغة JavaScript، تُستخدم تعليمة switch لتنفيذ كتل مختلفة من التعليمات البرمجية بناءً على قيمة تعبير واحد. تُعتبر switch بديلًا أكثر تنظيمًا ووضوحًا لسلسلة من تعليمات if...else if...else، خاصةً عندما يكون لديك العديد من الشروط التي تعتمد على نفس المتغير.
بنية تعليمة switch:
switch (expression) { case value1: // كود يُنفّذ إذا كان expression === value1 break; case value2: // كود يُنفّذ إذا كان expression === value2 break; case value3: // كود يُنفّذ إذا كان expression === value3 break; ... default: // كود يُنفّذ إذا لم يتطابق expression مع أي من القيم السابقة}expression: هو التعبير الذي سيتم تقييمه ومقارنته مع قيم الحالاتcase.case valueN: تُحدد قيمة معينة للمقارنة معexpression. يجب أن تكونvalueNقيمة ثابتة أو تعبيرًا يُقيّم إلى قيمة ثابتة.break: تُنهي تنفيذ تعليمةswitchوتنتقل إلى التعليمات البرمجية التي تليها. من الضروري استخدامbreakفي نهاية كل حالةcaseلمنع "السقوط" (fall-through) إلى الحالات التالية.default: حالة اختيارية تُنفّذ إذا لم يتطابقexpressionمع أي من قيمcaseالسابقة.
كيف تعمل تعليمة switch؟
- يتم تقييم
expressionمرة واحدة. - يتم مقارنة قيمة
expressionبشكل صارم (===) مع قيمة كلcaseبالتسلسل. - إذا تطابقت قيمة
expressionمع قيمةcase، يتم تنفيذ الكود الموجود داخل هذه الحالة. - إذا تم الوصول إلى
break، يتوقف تنفيذswitchوينتقل التحكم إلى التعليمات البرمجية التي تليها. - إذا لم يتطابق
expressionمع أي من قيمcase، يتم تنفيذ الكود الموجود داخل حالةdefault(إذا كانت موجودة). - إذا لم يتطابق
expressionمع أي من قيمcaseولم تكن هناك حالةdefault، لا يتم تنفيذ أي كود داخلswitch.
مثال:
let day = 3;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); // سيُطبع "الأربعاء"مثال مع "السقوط" (fall-through):
إذا لم يتم استخدام break في نهاية حالة case، سيستمر التنفيذ في الحالات التالية حتى الوصول إلى break أو نهاية switch. يُسمى هذا السلوك "السقوط".
let x = 1;
switch (x) { case 1: console.log("الحالة 1"); // سيُطبع case 2: console.log("الحالة 2"); // سيُطبع case 3: console.log("الحالة 3"); // سيُطبع break; default: console.log("الحالة الافتراضية");}في هذا المثال، سيتم طباعة "الحالة 1" و "الحالة 2" و "الحالة 3" لأن عدم وجود break بعد الحالة 1 و 2 تسبب في "السقوط" إلى الحالات التالية.
متى نستخدم switch؟
- عندما يكون لديك متغير واحد تريد مقارنته مع قيم متعددة.
- عندما تريد بديلًا أكثر وضوحًا وتنظيمًا لسلسلة
if...else if...elseطويلة.
متى لا نستخدم switch؟
- عندما تكون الشروط معقدة ولا تعتمد على مقارنة بسيطة لقيمة واحدة. في هذه الحالة، تكون
if...else if...elseأكثر ملاءمة. - عندما تحتاج إلى استخدام معاملات مقارنة أخرى غير المساواة الصارمة (
===).
باختصار، تُعتبر switch أداة قوية لتنفيذ كتل مختلفة من التعليمات البرمجية بناءً على قيمة تعبير واحد، وتُساعد على كتابة كود أكثر تنظيمًا وقراءة.
