أريد فهم switch في javascript من فضلكم

السلام عليكم

أنا أتعلم javascript, ولم أفهم ما هو switch بالضبط.

مثلا في الكود التالي المقتبس لغرض التعلم من موقع (المعهد العربي لتعلم لغات البرمجة):

```

<script type="text/javascript">

var d=new Date();

var theDay=d.getDay();

switch (theDay)

{

case 5:

document.write("وأخيراً يوم الجمعة");

break;

case 7:

document.write("السبت هو بداية يوم العمل");

break;

case 0:

document.write("الأحد يوم آخر من العمل");

break;

default:

document.write("إنني بانتظار يوم العطلة");

}

</script>

```

على أي أساس يتم طباعة عبارة يوم الجمعة في case5؟

يعني لماذا لو جعلتها case6 والتي بعدها 7 وشغلت الكود تظهر عبارة default?

لم أفهم طريقة عملها.

فهل منكم من يشرحها وياريت لو بأمثلة مع الشرح.

شكرا.


وظيفة (function) الـ switch بالبرمجة هي نفسها وظيفة أي switch كزرار أو مجموعة زراير يمكنك فتح وغلق أو دعنا نقول "اختيار" زرار يكون الذي يشتغل من دون الأزرار الأخرى.

في الحالة التي عندك هو يأخذ الرقم (integer سماه theDay) من method (or class) سماه بحرف الـ "d" ونداها (أو نادى الجزئية الخاصة بحساب تاريخ اليوم getDay بأول البرنامج هنا.

ثم هو بنى (/جهّز/ركّب) الـ switch هنا ليكون فيه 3 خيارات وحسب وإلا ينادي الـ default:

إذا "5" يبقى اليوم الجمعة أجازة أخيرا! (الراجل يبدو لا يحب عمله فينتظر يوم الأجازة بفارغ الصبر هكذا)

وإذا "7" يبقى يوم السبت العودة للعمل الذي لا يحبه.

وإذا "0" يبقى يوم آخر من العمل (ثاني أيام أسبوع العمل بالنسبة لديه)

وهكذا تمر الأيام عليه فجعل لها الـ "default" (يعني بقية الأرقام الأخرى التي ترجع من الـ method المناداة الخاصة ببقية أيام الأسبوع) يعرض أو يعبر عن حالته أنه "لا يزال ينتظر الـ weekend.

____________

لاحظ هنا أن الأرقام بالـ cases للـ switch هكذا (5، 7، 0،...) هي حسب بناء الـd.getDay هناك. (إذا أردت تغييرها مثلا لتناظر أيام الأسبوع السبعة 1-2-3-4-5-6-7 فعليك أن تغيرها هناك وليس بالـ switch هنا.

يعني إذا أضفت case 6 هنا كما تساءلت فلن يشغلها الـ switch إلا إذا كانت "6" تنتج من أحد أيام الأسبوع هنا في d.getDay (وغالبا "6" هناك يعبر عن الأيام التي بوسط أسبوع العمل فستمر من خلال الـ default هكذا)

(إذا الشرح ليس بواضح لك خذ راحتك بالمزيد من الاستفسار والأسئلة بإذن الله)

حاولت أن أفهم, ولكنني عندما طبقت استغربت أكثر.

لماذا هذا الكود يطبع default?

```

let fruits = ['banana', 'orange']

switch (fruits) {

case 'banana':

console.log('bananas');

break;

case 'orange':

console.log('oranges');

break;

default:

console.log('just a test');

}

```