рекурсия ли это ? объясните что тут происходит

почему в каждом 0-вом элементе тот же нулевой элемент до бесконечности и вроде рекурсии нету не пойму никак

let arr = ["a", "b"];

arr.push(function() {
  arr.unshift(this)
})
arr[2]();

console.log(arr)


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

Автор решения: Stranger in the Q

Этот феномен называется "Циклическая ссылка" или "Ссылка на самого себя"

Циклические ссылки в общем случае это не только ссылки на самого себя, но и опосредованные циклические ссылки.


Ссылка на самого себя:

let a = {x:1};
a.a = a;
console.log(a)


Опосредованная циклическая ссылка

let a = {x: 1};
a.a = {x: 2, a};
console.log(a);

PS:

Отладчик браузера google chrome, использует "ленивое вычисление" и в момент раскрытия узла, добавляет его содержимое, да это своего рода рекурсия, точнее рекурсия применена для вывода представления циклической ссылки:

введите сюда описание изображения

могло быть сделано иначе, например как в сниппете тут:

введите сюда описание изображения

→ Ссылка