Проверяем чуть дополненный
body = {"car": [
'asd',
'ddddd',
{
class: 'asd'
},
'dddd'
]}
i = 0
function go(level = 1) {
console.log(i, level)
if (i < body["car"].length) {
if (body["car"][i].hasOwnProperty('class') == false) {
i++
go(level + 1)
}
console.log('ok')
i++
go(level + 1)
}
else if (i >= body["car"].length) {
console.log('exit')
}
}
Имеем вывод:
0 1
1 2
2 3
ok
3 4
4 5
exit
ok
5 5
exit
ok
6 3
exit
ok
7 2
exit
Соответственно смотрим какой уровень вложенности, т.е. все верно отрабатывает, ведь еще ж надо выйти из рекурсии
Но если мы добавим return
function go(level = 1) {
console.log(i, level)
if (i < body["car"].length) {
if (body["car"][i].hasOwnProperty('class') == false) {
i++
return go(level + 1)
}
console.log('ok')
i++
return go(level + 1)
}
else if (i >= body["car"].length) {
console.log('exit')
}
}
То вывод тоже поменяется
0 1
1 2
2 3
ok
3 4
4 5
exit
Возможно это требовалось ?