Работа цикла для обхода объекта
Всем привет. Вопрос вот в чем. На сколько я понимаю, для корректной работы циклу, например while или for необходимы счетчики, чтобы определить где закончить обход. Есть пример кода, связанный с односвязанным списком. Вот пример кода:
var list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
var tmp = list;
while (tmp) {
alert( tmp.value );
tmp = tmp.next;
}
}
printList(list);
Каким образом цикл без использования счетчика знает, где закончить и как он вообще переходит к след.итерации?
p.s. заканчивает наверно на null, остальное непонятно.
Источник: Stack Overflow на русском