اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

الخطأ في هذا الكود هو أن العبارة case  في جملة switch يجب أن تحتوي على قيمة ثابتة وليس عبارة مقارنة.

في هذا الحال، تفهم جافاسكريبت الـ val > 30 كـ true، ولكن لأن val  لا يساوي true فلن يتم طباعة اي قيمة.
يمكنك استخدام جملة if...else بدلاً من جملة switch. هذا مثال على كيفية تحقيق النتيجة المطلوبة باستخدام جملة if...else:
const val = 40;
if (val > 30) {
    console.log("more then 30");
} else {
    console.log("less then 30");
}

هذا مثال على كيفية استخدام جملة `switch`:

const fruit = 'apple';
switch (fruit) {
    case 'banana':
        console.log('I am a banana');
        break;
    case 'apple':
        console.log('I am an apple');
        break;
    case 'orange':
        console.log('I am an orange');
        break;
    default:
        console.log('I am not a fruit');
}
  • 0
نشر

هناك طريقة لاستعمال switch للقيام بذلك، و هي محاولة عمل مطابقة للقيمة التي نريدها بدل المتغير مع الشرط المطلوب، أي بدلاً من أن نعطيها val نعطيها true، فنحن نريد الشرط الذي يعطي true، بالتالي في حالتك يمكنك كتابة ما يلي:

let val = 40;

switch (true)
{
	case val > 30:
		console.log("Very good " + val);
		break;
	case val > 20:
		console.log("Good " + val);
		break;
	default:
		console.log("Failed " + val);
		break;
}

بالطبع هذه فقط حيلة لجعل ال switch تعمل على ذلك، و لكن في هذه الحالة من الأفضل استعمال if..else ﻷن المثال هنا ليس واضحاً تماماًـ حيث أننا في البرمجة نهتم بوضوح الكود و ليس فقط أن يعمل بشكل صحيح، كما أن استعمال if..else يعطي أداء أسرع في بعض الحالات، و بالتالي في حال استعمال هذه الشروط في حلقة تتكرر كثيراً فمن الأفضل استعمال if..else.

  • 0
نشر
بتاريخ 50 دقائق مضت قال عمر قره محمد:

الخطأ في هذا الكود هو أن العبارة case  في جملة switch يجب أن تحتوي على قيمة ثابتة وليس عبارة مقارنة.

في هذا الحال، تفهم جافاسكريبت الـ val > 30 كـ true، ولكن لأن val  لا يساوي true فلن يتم طباعة اي قيمة.
يمكنك استخدام جملة if...else بدلاً من جملة switch. هذا مثال على كيفية تحقيق النتيجة المطلوبة باستخدام جملة if...else:
const val = 40;
if (val > 30) {
    console.log("more then 30");
} else {
    console.log("less then 30");
}

هذا مثال على كيفية استخدام جملة `switch`:

const fruit = 'apple';
switch (fruit) {
    case 'banana':
        console.log('I am a banana');
        break;
    case 'apple':
        console.log('I am an apple');
        break;
    case 'orange':
        console.log('I am an orange');
        break;
    default:
        console.log('I am not a fruit');
}

هل يمكن استخدام If.  Else.   في حال كان لدي اكثر من حالتين ؟

  • 0
نشر

لا يعمل الكود بطبعية الحال لأن استعلام switch لا يقبل عبارات expressions وإنما قيما فقط، فالمسند إلى استعلامات case يجب أن يكون إما محارف literals أو ثوابت constants، وبما أن switch لا يقبل ذلك فالكود لن يعمل بطبيعة الحال. الطريقة الصحيحة لإستعمال ذلك هي باستخدام شرط if else بشكل عادي: 

let val = 40;

if (val > 30) {
  console.log("Very good " + val);
} else if (val > 20) {
  console.log("Good " + val);
} else {
  console.log("Failed " + val);
}
  • 0
نشر
بتاريخ 5 ساعة قال عمار عبد الهادي ميرزا:

هل يمكن استخدام If.  Else.   في حال كان لدي اكثر من حالتين ؟

بالطبع وحتى في حال كان لديك أكثر من 10 حالات ولا يوجد عدد محدد، وإليك مثال:

const x = 10;

if (x > 0) {
  console.log("x هو عدد موجب");
} else if (x < 0) {
  console.log("x هو عدد سالب");
} else {
  console.log("x هو الصفر");
}

والفرق بين الجملة الشرطية if والـ Switch case هو أن الـ Switch نستخدمه في حال كان لدينا متغير واحد ونريد تنفيذ كود معين بناءًا على ذلك المتغير.

أما الجملة الشرطية، فتستطيع استخدام عدة متغيرات ولا مشكلةفي ذلك، أي تستطيع استخدام أي نوع من الشروط والتعامل مع العديد من الحالات المعقدة بشكل أكبر، بالمقابل، switch case أكثر محدودية بسبب استخدامه لقيمة ثابتة فقط (متغير واحد) لحالات "case".

أيضًا نستطيع استخدام شروط معقدة مع المعاملات المنطقية المختلفة مثل AND و OR للتحقق من صحة الشروط المتعددة، أما في "switch case"، يتم التحقق من تطابق القيمة المحددة للمتغير مع القيم المحددة في حالات "case".

وهناك أمر هام وهو أن"switch case" أكثر كفاءة في الأداء عندما يكون لديك عدد كبير من الحالات الممكنة، لكونه يتيح للمترجم تحسين عمليات الفحص الداخلية وأسرع من سلسلة متسلسلة من الشروط في "if"، ولكن بالطبع في حال كان لدينا متغير واحد.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...