Не удается прочитать свойства неопределенного (значение '0')

Появляется ошибка Не удается прочитать свойства неопределенного (значение '0'), в самом i:
if (arr[i]) {

Как от нее избавиться? может кто знает, статью на эту тему или может рассказать поподробнее почему возникает эта ошибка? в гугле ответ на мой вариант ошибки не нашел.

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function sumRecursive(arr, sum = 0, i = 0) {
                if (arr[i]) {
                    return sumRecursive(arr, sum + arr[i], i++)
                } else {
                    return sum
                }
            };```

Ответы (1 шт):

Автор решения: Алексей Шиманский

Вообще-то проблема не та, что вы описали.


Проблема тут

return sumRecursive(arr, sum + arr[i], i++)
                                       ^^^

Потому что вы не доизучили как работает постфиксный инкремент. Он вначале отдаёт значение, а потом производит увеличение на 1. Таким образом у вас StackOverflow, т.к. функция вызывается бесконечно с i=0

Починить проблему просто:

  • Либо применить префиксный инкремент ++i
  • Либо написать прибавление на 1 наглядно i + 1
→ Ссылка