从来没有见过循环这种方式如何工作?

Tsu*_*una 2 javascript for-loop

我只是在阅读一本书,但它没有提到使用for这种方式.我能理解的最常见的方式,但我不知道它是如何开始和结束的.

这是一个函数,其中包含一个for循环,并且插入到参数中的是一个继承对象和对象(如列表)的对象.

function listToArray(list) {
  var array = [];
  for (var node = list; node; node = node.rest)
    array.push(node.value);
  return array;
}

var object = {
    value: 10,
    rest: {
        value: 20,
        rest: {
            value: 30,
            rest: null
        }
    }
}

console.log(listToArray(object));
// ? [10, 20, 30]
Run Code Online (Sandbox Code Playgroud)

for (var node = list; node; node = node.rest)这是我不明白它是如何工作的部分.它是如何开始或结束的.

我只是有一个简单的猜测自己开始,节点是一个对象所以如果node != null那时node = list,node = node.rest哪个是下一个对象

Que*_*tin 5

for循环有三个参数:

for ([initialization]; [condition]; [final-expression])
Run Code Online (Sandbox Code Playgroud)

var node = list; 循环启动时运行.

node 是条件,如果它是假的,循环将不会再次出现.

node = node.rest 在循环结束时运行.

所以:

它设置nodelist然后继续替换node先前nodes rest属性的值.

最后node{ value: 30, rest: null },因此它设置nodenull再测试,如果nulltrue,然后停止,因为它不是.