الدرس 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. الصفحة تعرض الرسائل الأربع بترتيبها
index.html
المعاينة
index.html100%
–/6

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

6 معايير في بطاقة «المطلوب».