Не удается прочитать свойства неопределенного (значение '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