في لغة 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
أداة قوية لتنفيذ كتل مختلفة من التعليمات البرمجية بناءً على قيمة تعبير واحد، وتُساعد على كتابة كود أكثر تنظيمًا وقراءة.