في هذا الدرس 6تصفّح المواضيع
في جميع الدروس السابقة كان المحرك ينفذ الأسطر كلها بالتتابع الحرفي من الأعلى للأسفل. أما البرامج الحقيقية فتحتاج باستمرار لاتخاذ قرارات ذكية: كمنح الشحن المجاني إذا بلغت السلة 100 دولار، أو إظهار تنبيه عند نفاد المخزون.
تمنحك جمل التحكم في مسار التنفيذ (Control Flow) القدرة على اختبار شرط منطقي أثناء التشغيل لتشغيل الكتلة المناسبة وتخطي المسارات الأخرى تماماً.
تُكتب جملة if بوضع التعبير الشرطي داخل قوسين هلاليين (...) يتبعهما قوسان معقوفان { ... } يضمان الأوامر المراد تنفيذها. فإذا كانت نتيجة الشرط محققة (Truthy) تعمل الكتلة، وإلا يتخطاها المحرك بالكامل.
التزم دائماً بكتابة القوسين المعقوفين { ... } حتى لو احتوت الكتلة سطراً واحداً؛ فإهمالهما من أشهر مسببات الأخطاء الخفية عند إضافة سطر ثانٍ لاحقاً!
عندما تريد مسارين متقابلين لا ثالث لهما، ألحق كتلة else { ... } مباشرةً بعد إغلاق قوس if؛ وبذلك تضمن عمل أحد المسارين حتماً بحسب تحقق الشرط أو عدمه دون أن يعملا معاً أبداً.
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 أبداً |
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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 if Statement جملة الشرط if
- جملة تحكم تشغل كتلة الأوامر المحاطة بأقواسها المعقوفة فقط عند تحقق التعبير الشرطي.
- للمراجعة
- 02 else / else if Clauses فروع التتالي والبديل else if / else
- فروع شرطية متسلسلة تُختبر من الأعلى للأسفل لتنفيذ أول فرع مطابق فقط أو تشغيل الفرع البديل الختامي.
- للمراجعة
- 03 Logical Guard Condition شرط الحراسة المدمج
- دمج المعايير المترابطة بالمعاملات المنطقية في رأس شرط واحد نظيف بدلاً من تداخل الكتل.
- للمراجعة
- 04 Accidental Assignment Bug خطأ الإسناد العرضي بالشرط
- كتابة علامة = مفردة بالخطأ بدل === داخل الشرط مما يغير قيمة المتغير بدلاً من مقارنتها.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 UI UI
- User Interface
- طبقة الواجهة المرئية التي تتغير رسائلها وشاراتها ديناميكياً تبعاً لنتيجة الجمل الشرطية.
- للمراجعة
- 02 RBAC RBAC
- Role-Based Access Control
- نظام التحكم بالصلاحيات حسب الدور والذي يجب فرضه بالخادم دائماً وعدم الاكتفاء بشروط الواجهة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح مثال الشحن المجاني في محرر التجربة وخفّض قيمة cartTotal من 120 إلى 65 للتحقق من رسالة الفرع البديل else.
-
افحص التبويب الثاني في المحاكي لترسيخ أهمية فحص items.length > 0 بدلاً من الاكتفاء باسم المصفوفة.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.