user_of_toster
@user_of_toster

Почему рекурсивная функция меняет переменные исходной функции?

Рекурсивная функция:
const displayTree = tree => {
                let count = 0;
                for (comment of tree) {
                    if (comment.children.length > 0) {
                        console.log(`recur_start: #${count}# ${comment.text} : ${comment.uui} `)
                        html += displayTree(comment.children); // после вызова переменная comment меняется
                        console.log(`recur_end  : #${count++}# ${comment.text} : ${comment.uui} `)
                    }
                }
            };


Лог:
recur_start: #0# PARENT 1 : 10 
recur_start: #0# CHILD 1 : 7 
recur_end  : #0# MEGACHILD 1 1 2 : 6 
recur_end  : #0# CHILD 1 2 : 9 
recur_start: #1# PARENT 2 : 16 
recur_end  : #1# CHILD 2 2 : 15 
recur_start: #2# PARENT 3 : 20 
recur_end  : #2# CHILD 3 : 19


recur_start не совпадает с recur_end --> переменные меняются после вызова рекурсивной функции. Разве не должна рекурсивная функция быть полностью изолированной и иметь свой local scope? Почему переменные меняются после её вызова?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
for (comment of tree) {

Переменная comment не объявлена. Погуглите, что происходит при попытке использования переменной, которая отсутствует в текущей области видимости.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы