В JS объекты копируются по ссылке, а не по значению. Когда вы делаете так:
var temp = list;
переменные
temp
и
list
ссылаются на один и тот же объект. Поэтому
list.rest = temp;
то же самое, что и
list.rest = list;
Вероятно, вы хотите получить что-то такое:
function printList(list){
var tmp = list;
while (tmp.rest !== null) {
console.log(tmp.value);
tmp = tmp.rest;
}
}
var list = {
value: 1,
rest: null
};
for(var i = 0; i < 10; i++){
temp = { value: i, rest: list };
list = temp;
}
printList(list);
console.log(list);
Для чего вам такая структура? Не подойдёт обычный массив?