Предположим, у меня есть функция, которая сканирует массив ...
flatten([a, b, c, d, [e, f, g, [h, i, j, k], l], m, n, o, p])
>> [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p]
Flatten будет сканировать код и для каждого найденного массива будет рекурсивно вводить этот массив и возвращать значения, чтобы у вас был плоский массив.
Это работает, пока у нас не появится массив, такой как:
a = [];
a[0] = a;
Это, очевидно, создает бесконечную рекурсию:
Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
...
Как я могу обнаружить это поведение без модификации массива так, чтобы функция могла справиться с этим?