3.0 KiB
title, localeTitle
title | localeTitle |
---|---|
Catch Off By One Errors When Using Indexing | Устранение ошибок при использовании индексирования |
Устранение ошибок при использовании индексирования
основы
Из-за того, как работают индексы JavaScript, 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()
. Они помогут вам понять, как работает ваш код.
Решение
Самый простой способ исправить это - изменить условия for (). Запустите i
в 0. Также цикл не должен выполняться для i == 5. Другими словами, связь между i
и len
должна быть false
при i == 5. Этого можно достичь, используя i < len
(Is 5 <len? false, и цикл не будет выполнен!).
for (let i = 0; i < len; i++) {
Счастливое кодирование! : Компьютер: