I am looking at this exercise from the book Eloquent Javascript, Chapter 4 - A List for quite some time and I'm trying to understand how this particular function works:
function arrayToList(array) {
let list = null;
for (let i = array.length - 1; i >= 0; i--) {
list = {value: array[i], rest: list};
}
return list;
}
console.log( arrayToList([10, 20]));
// → {value: 10, rest: {value: 20, rest: null}}
Even after adding the list to the Watch window in the Debugger I can't clearly see the following:
1. How does exactly the statement from list = {value: array[i], rest: list}; get appended to the rest property of the nested object, during each iteration?
Obviously, the dot .rest or bracket ['rest'] notation are not being used, and it is not being explicitly specified that during every following iteration we are referring to the property of the object or its later nested objects, so how does it get appended to the property of each next nested object.
I am expecting for every iteration to overwrite the contents of the list object, but this is not the case.