Javascript - 数组混乱的函数

Javascript - Function on Array confusion

本文关键字:函数 混乱 数组 Javascript      更新时间:2023-09-26
function arrayToList(array) {
  var list = null
  for (var i = 0; i < array.length; i++)
    list = {value: array[i], rest: list};
  return list;
}
console.log(arrayToList([10, 20, 30]));
// {value:  30, rest:{ value:20, rest:{value: 10, rest: null}}

我已经从雄辩的 JavaScript 练习中查看了这个函数几个小时,并且无法理解为什么结果是相反的。任何帮助将不胜感激。

以下是在for-loop中迭代时发生的情况:

第一次迭代: i = 0 ; list = {value:10, rest:null}

第二次迭代: i = 1 ; list = {value:20, rest:{value:10, rest: null}}

第三次迭代: i = 2 ; list = {value:30, rest:{value:20, rest:{value:10, rest: null}}}

在每次迭代中,您都将list对象嵌套在其中:

list = {value: array[i], rest: list};

在循环中设置输出,然后你可以看到它是如何工作的:

function arrayToList(array) {
    var list = null
    for(var i = 0; i < array.length; i++) {
        list = {value: array[i], rest: list};
        console.log(list);
        console.log(''n');
    }
    return list;
}
arrayToList([10, 20, 30]);

/*输出

{ 值:10,其余:空 }

{ 值: 20, 休息: { 值: 10, 休息: 空 } }

{ 值: 30, 休息: { 值: 20, 休息:

{ 值: 10, 休息: 空 } } }

*/

您已设置列表 = 空。

循环中第一次,列表是"{值:10,休息:空}">

->嵌套在其中的">"。

循环中的第二次,列表是"{ 值:20,休息:{ 值:10,休息:空} }">

-> ">{ 值: 10, rest: null }" 嵌套在其中。

最后一次,列表是"{ 值:30,休息:{ 值:20,休息:

{ 值:10,休息:空 } } }

">

-> ">{ 值: 20, 休息: { 值: 10, 休息: 空 } }" 嵌套在里面。