Off by one errors
(تسمى أحيانًا OBOE) عند محاولة استهداف فهرس معين لسلسلة أو صفيف (لتقسيم شريحة أو الوصول إليها) ، أو عند التكرار فوق مؤشراتها. تبدأ فهرسة جافا سكريبت في الصفر ، وليس واحدة ، مما يعني أن الفهرس الأخير يكون دائمًا أقل من طول العنصر. إذا حاولت الوصول إلى فهرس مساوٍ للطول ، فقد يلقي البرنامج خطأ مرجع "فهرسة خارج النطاق" أو يطبع undefined
. عند استخدام سلسلة أو طرق صفيف تأخذ نطاقات الفهرس كوسيطة ، فإنها تساعد على قراءة الوثائق وفهم ما إذا كانت شاملة (العنصر الموجود في الفهرس المعين هو جزء مما تم إرجاعه) أم لا. في ما يلي بعض الأمثلة على أخطاء واحدة: let alphabet = "abcdefghijklmnopqrstuvwxyz"؛
دعونا لين = alphabet.length.
لـ (let i = 0؛ i <= len؛ i ++) {
// حلقات واحدة عدة مرات في النهاية
console.log (الأبجدية [أنا])؛
}
لـ (let j = 1؛ j <len؛ j ++) {
// يكرر مرات قليلة جدًا ويفتقد الحرف الأول في الفهرس 0
console.log (الأبجدية [ي])؛
}
لـ (let k = 0؛ k <len؛ k ++) {
// يوافق Goldilocks - وهذا هو الصحيح
console.log (الأبجدية [ك])؛
}