الدرس 5 من 8

خطأ الفرق بواحد

هدف الدرس

افحص الحدود قبل الوسط

01

الشرح

خطأ الفرق بواحد (off-by-one) أشهر أخطاء الحلقات، فتبدأ الحلقة بعد أول عنصر بخطوة، أو تتوقّف قبل آخره بخطوة، أو تتجاوزه بخطوة، والكود يبدو صحيحًا تمامًا حين تقرؤه.

والقاعدة التي تحلّ أغلبه أن مواضع عناصر المصفوفة تبدأ من 0 وتنتهي عند length - 1، أمّا list[list.length] فلا يرمي خطأً بل يُرجع undefined بصمت، ولهذا تظهر «undefined» في الصفحة دون أن يتوقّف شيء.

ولتكتشفه جرّب الحدود لا الوسط، أي جرّب قائمة فارغة، وقائمة فيها عنصر واحد، وأول عنصر وآخر عنصر، فهناك يختبئ هذا الخطأ دائمًا.

02

المطلوب

أصلح الحلقة في newestFirst(list) لتُرجع الرسائل كلّها من الأحدث إلى الأقدم، دون أي undefined، ودون أن تغيّر المصفوفة الأصلية.

الفحوص

6 فحوص
  1. الحلقة لا تقرأ بعد آخر موضع
  2. أقدم عنصر لا يضيع
  3. القائمة ذات العنصر الواحد تبقى كما هي
  4. القائمة الفارغة تعطي قائمة فارغة
  5. المصفوفة الأصلية لا تتغيّر
  6. الصفحة تعرض الرسائل الأربع من الأحدث إلى الأقدم
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

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

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

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

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعة ونصف.