Как происходит наполнение списка в данном примере? (JavaScript)
Всем привет, в следующем примере происходит создание списка из массива данных, в котором каждый элемент вложен в предыдущий . Объясните пожалуйста, как здесь происходит заполнение объекта list0, ведь в цикле его нигде нет. Это можно объяснить тем, что list0 является ссылкой на list, но зачем тогда он нужен, и почему ссылка затирается в последующей работе кода? Спасибо за ответ :)
function arrayToList(arr) {
let list = {
value: arr[0],
rest: null
}
let list0 = list;
console.log(list === list0)
// true
for (i = 1; i < arr.length; i++) {
list.rest = {};
list.rest.value = arr[i];
list.rest.rest = null;
list = list.rest;
}
console.log(list === list0)
//false
console.log(list)
console.log(list0)
}
arrayToList([1, 2, 3, 4, 5])
Ответы (1 шт):
В list0 мы просто сохраняем ссылку на корень списка, чтобы можно было потом вывести его в консоль целиком. Этот корень присутствует в первой итерации цикла под именем list, но в каждой следующей итерации эта переменная уже ссылается на дочерний элемент следующей степени вложенности. Мы бы потеряли ссылку на корень, если бы не сохранили её в list0, ведь в конце итераций list ссылается уже на самый глубокий элемент.