Задача из книги Выразительный Javscript. Как понять решение?

Напишите функцию arrayToList, которая строит такую структуру, получая в качестве аргумента [1, 2, 3], а также функцию listToArray, которая создаёт массив из списка.

Я нашел несколько решений, в том числе и здесь. Но не могу понять как решить самому. Ничего не приходит в голову. Вот, например, решение первой функции:

function arrayToList(arr) {

  let i = arr.length - 1,
    list = null;

  for (; i >= 0; i--) {
    list = { 
      value: arr[i],
      rest: list 
    };
  }
  return list
}

Почему в строке rest: list, list == null? Если list уже перезаписан и стал объектом.

Или вот ещё решение:

function arrayToList(arr) {
  
  var list = { 
    value: arr[0], 
    rest: null
  }
  
  var list0 = list;
    
  for (i=1; i<arr.length; i++) {
    list.rest = new Object();
    list.rest.value = arr[i];
    list.rest.rest = null;  
    list = list.rest ;
  }
  
  return list0;

}

Почему в итоге list и list0 это разные объекты. Тогда как list0 ссылается на объект list и они должны быть одним объектом.


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