انتقل إلى محتوى الدرس
الدرس 32
تاريخ النشر: تاريخ التحديث:
دورة جافا سكريبت

الجمل الشرطية if وelse في JavaScriptJavaScript if else and else if Conditions طريقة تجنب الإسناد العرضي بالشرط، ومفهوم التفرع الشرطي والقرار، وصياغة جملة الشرط if

تحكّم في مسار تنفيذ الكود عبر جمل if وelse if وelse في JavaScript: ابنِ سلاسل القرارات المرتبة وبسّط التداخل بالمعاملات المنطقية وتجنب أخطاء الإسناد العرضي.
أقسام الدرس
6
الأمثلة
2
اللغة
العربية
المشاهدات
9,164
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

في جميع الدروس السابقة كان المحرك ينفذ الأسطر كلها بالتتابع الحرفي من الأعلى للأسفل. أما البرامج الحقيقية فتحتاج باستمرار لاتخاذ قرارات ذكية: كمنح الشحن المجاني إذا بلغت السلة 100 دولار، أو إظهار تنبيه عند نفاد المخزون.

تمنحك جمل التحكم في مسار التنفيذ (Control Flow) القدرة على اختبار شرط منطقي أثناء التشغيل لتشغيل الكتلة المناسبة وتخطي المسارات الأخرى تماماً.

مخطط التفرع الشرطي في JavaScript عبر if وelse if وelse وتنفيذ مسار واحد مطابق فقط

تُكتب جملة if بوضع التعبير الشرطي داخل قوسين هلاليين (...) يتبعهما قوسان معقوفان { ... } يضمان الأوامر المراد تنفيذها. فإذا كانت نتيجة الشرط محققة (Truthy) تعمل الكتلة، وإلا يتخطاها المحرك بالكامل.

التزم دائماً بكتابة القوسين المعقوفين { ... } حتى لو احتوت الكتلة سطراً واحداً؛ فإهمالهما من أشهر مسببات الأخطاء الخفية عند إضافة سطر ثانٍ لاحقاً!

عندما تريد مسارين متقابلين لا ثالث لهما، ألحق كتلة else { ... } مباشرةً بعد إغلاق قوس if؛ وبذلك تضمن عمل أحد المسارين حتماً بحسب تحقق الشرط أو عدمه دون أن يعملا معاً أبداً.

JavaScript
const cartTotal = 120;
let shippingNote = '';
if (cartTotal >= 100) {
  shippingNote = 'Qualified for FREE express shipping!';
} else {
  shippingNote = `Add ${100 - cartTotal} USD for free shipping.`;
}
document.getElementById('ship-out').textContent = shippingNote;

لاختبار ثلاث شرائح متدرجة أو أكثر (كتقديرات الدرجات)، اربط الفروع عبر else if (...) مرتبةً من الحد الأخص والأعلى نزولاً إلى الأعم؛ إذ يتوقف الفحص فور تطابق أول فرع ولا تُفحص بقية الفروع التالية إطلاقاً:

ترتيب كتابة الشروطأثر الترتيب على صحة النتيجة
فحص score >= 90 أولاً ثم else if (score >= 75)صحيح: الدرجة 95 تطابق الامتياز أولاً وتتوقف السلسلة
فحص score >= 60 أولاً ثم else if (score >= 90)خطأ منطقي! تلتقط 60 الدرجة 95 مبكراً فلا يصل التنفيذ لفرع 90 أبداً
JavaScript
const score = 84;
let badge = '';
if (score >= 90) {
  badge = 'Distinction (A)';
} else if (score >= 75) {
  badge = 'Merit (B)';
} else {
  badge = 'Keep Practicing (C)';
}
document.getElementById('grd-out').textContent = `Score ${score}: ${badge}`;

إن تكديس جمل if متداخلة داخل بعضها ينتج كوداً متعرجاً يصعب تتبعه وصيانته. في أغلب الحالات يمكنك تسطيح التداخل في شرط واحد نظيف ومقروء عبر دمج المعايير بمعاملي العطف والتخيير && و|| مثل if (isActive && hasSeat).

من أخطر الأخطاء الإملائية في البرمجة كتابة علامة إسناد مفردة = بدلاً من المساواة الصارمة === داخل أقواس الشرط! فكتابة if (userRole = "admin") تغير قيمة المتغير فعلياً إلى "admin" وتنتج نصاً محققاً يشغّل كتلة المدير في كل مرة!

إن اعتماد const افتراضياً والالتزام الدائم بعلامة === يقضيان على هذه الثغرة المنطقية من جذورها.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس التفرع الشرطي عبر if، والمسار البديل عبر else، وترتيب الشرائح المتعددة عبر else if، وتبسيط الشروط المتداخلة بالمعامل &&، وتجنب فخ الإسناد المفرد =. الخطوة التالية: انتقل الآن إلى درس «المعامل الشرطي الثلاثي في JavaScript» لإنتاج القيم الشرطية المختصرة مباشرةً داخل التعبيرات!

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 if Statement جملة الشرط if
جملة تحكم تشغل كتلة الأوامر المحاطة بأقواسها المعقوفة فقط عند تحقق التعبير الشرطي.
للمراجعة
02 else / else if Clauses فروع التتالي والبديل else if / else
فروع شرطية متسلسلة تُختبر من الأعلى للأسفل لتنفيذ أول فرع مطابق فقط أو تشغيل الفرع البديل الختامي.
للمراجعة
03 Logical Guard Condition شرط الحراسة المدمج
دمج المعايير المترابطة بالمعاملات المنطقية في رأس شرط واحد نظيف بدلاً من تداخل الكتل.
للمراجعة
04 Accidental Assignment Bug خطأ الإسناد العرضي بالشرط
كتابة علامة = مفردة بالخطأ بدل === داخل الشرط مما يغير قيمة المتغير بدلاً من مقارنتها.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 UI UI
User Interface
طبقة الواجهة المرئية التي تتغير رسائلها وشاراتها ديناميكياً تبعاً لنتيجة الجمل الشرطية.
للمراجعة
02 RBAC RBAC
Role-Based Access Control
نظام التحكم بالصلاحيات حسب الدور والذي يجب فرضه بالخادم دائماً وعدم الاكتفاء بشروط الواجهة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح مثال الشحن المجاني في محرر التجربة وخفّض قيمة cartTotal من 120 إلى 65 للتحقق من رسالة الفرع البديل else.

  2. افحص التبويب الثاني في المحاكي لترسيخ أهمية فحص items.length > 0 بدلاً من الاكتفاء باسم المصفوفة.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

في سلسلة if / else if / else إذا صادف تحقق شرطين معاً، فكم كتلة تنفيذية ستعمل؟

02

إذا كانت المصفوفة فارغة const cart = []، فماذا يحدث عند تنفيذ الشرط if (cart)؟

03

لماذا تُعد كتابة if (status = "paid") بعلامة يساوي واحدة خطأً برمجياً خطيراً؟

04

في جملة if / else يستحيل أن تعمل كتلة if وكتلة else معاً في نفس المرة.

05

عند تصنيف الدرجات (90، 75، 60) بمعامل أكبر أو يساوي، كيف يجب ترتيب شروط if وelse if؟

06

أي شرط مسطح نظيف يغني عن التداخل: if (loggedIn) يتبعها بالداخل if (verified)؟

07

الالتزام بكتابة الأقواس المعقوفة { ... } حتى مع السطر الواحد يحمي الكود من أخطاء الإضافة اللاحقة.

08

يمكن قراءة المتغير المعرف بـ const داخل قوسي if { ... } من خارج الكتلة بحرية.

09

إذا كانت قيمة المتغير let count = 0، فماذا يحدث عند فحص if (count)؟

10

إخفاء زر الإدارة في المتصفح بجملة if (isAdmin) يكفي أمنياً ويغني عن فحص الصلاحية بالخادم.