在代码中,我认为第一个值的“ i”应为= 1,为什么它的0

时间:2019-11-26 09:08:02

标签: javascript

在代码中,我认为第一个值的“ i”应为= 1,为什么它的0会变成

function arrayToList(array) {
  var list = null;
  for (var 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}}

2 个答案:

答案 0 :(得分:2)

它是1,正如您在循环中看到的值的输出一样。

function arrayToList(array) {
    var list = null;
    for (var i = array.length - 1; i >= 0; i--) {
        console.log(i, array[i]);
        list = { value: array[i], rest: list };
    }
    return list;
}

console.log(arrayToList([10, 20])); // → {value: 10, rest: {value: 20, rest: null}}

答案 1 :(得分:0)

正如Nina Scholz所说的,它是第一次迭代中的1。您只是看不到它,因为该值已被最后一次迭代0取代。

因为您正在做list = { value: array[i], rest: list };。它将第一个list值替换为i = 1。如果您执行类似push的操作list(需要为此定义list.push({ value: array[i], rest: list };)作为数组)。

为使您可以在第一次迭代中看到它是i = 1,请在for循环本身中执行console.log的{​​{1}}。

list