2.7 KiB
title | localeTitle |
---|---|
Catch Off By One Errors When Using Indexing | القبض عن طريق واحدة من الأخطاء عند استخدام الفهرسة |
القبض عن طريق واحدة من الأخطاء عند استخدام الفهرسة
مبادئ
بسبب الطريقة التي تعمل بها فهارس جافا سكريبت firstFive
لديها خمسة عناصر لكنها مفهرسة من 0 إلى 4 !
console.log(len); // 5 console.log(firstFive[0]); // 1 /**/ console.log(firstFive[4]); // 5 console.log(firstFive[5]); // undefined
يجب أن يعطيك ما يكفي لإدراك حدود firstFive
. توجيه انتباهك إلى الحلقة. ماذا تعمل، أو ماذا تفعل؟ يمكنك محاولة تصحيح الأخطاء لمعرفة ذلك!
التصحيح
يتم منحك هذا الرمز:
for (let i = 1; i <= len; i++) { console.log(firstFive[i]); }
لتصحيح هذه القطعة من التعليمات البرمجية ، استخدم console.clear()
. ما هو أفضل مكان لذلك؟ الجواب الصحيح قبل for
بيان!
console.clear(); for (let i = 1; i <= len; i++) { console.log(firstFive[i]); }
إخراج وحدة التحكم:
Console was cleared. 2 3 4 5 undefined
تحليل
دراسة الانتاج. تحت هذه الشروط ، تقوم الحلقة أولاً بطباعة العنصر الموضع في 1… وهو 2! يحاول أيضًا طباعة العنصر المفهرس في 5 وهو غير undefined
.
يمكن اعتبار هذا هو الهدف من هذا التحدي. إبقاء console.log()
و console.clear()
الحالية. سوف تساعدك على فهم كيفية عمل التعليمات البرمجية الخاصة بك.
حل
الطريقة الأكثر مباشرة لإصلاح هذا هي تغيير الشروط (). اجعل i
تبدأ عند 0. كذلك لا يجب تنفيذ الحلقة لـ i = = 5. وبعبارة أخرى ، يجب أن تكون العلاقة بين i
و len
false
عند i == 5. يمكن تحقيق ذلك باستخدام i < len
(Is 5 <len؟ false ، ولن يتم تنفيذ الحلقة!).
for (let i = 0; i < len; i++) {
الترميز سعيدة! :الحاسوب: