Eloquent Javascript: 练习:一个列表

Eloquent Javascript: Exercise: A list

我正在从一本名为 'Eloquent Javascript'

的书中学习 JavaScript

我正在尝试解决此处描述的练习:http://eloquentjavascript.net/04_data.html#h_nSTX34CM1M

我设法确定此代码有效:

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([1, 2, 3]));

结果:{值:1,其余:{值:2,其余:{值:3,其余:空}}}

到目前为止一切顺利,根据本书,这是正确的解决方案。但是!

当我尝试 运行 同样的事情但使用更长的数组时,假设:

console.log(arrayToList([1, 2, 3, 4, 5]));

结果是:{值:1,剩余:{值:2,剩余:{值:3,剩余:[对象]}}}

这是为什么?我的代码有错吗?

数组长一点也没什么问题。 console.log() 是一种非标准的、特定于浏览器的实现,一些实现对它们将显示的对象嵌套级别设置了上限。当他们达到那个级别时,他们只显示 [Object] 而不是递归到它以显示更深的嵌套。

如果您真的设置断点并在调试器中检查您的变量,您会发现您可以尽可能深地展开嵌套级别并查看所有内容。

或者,您可以这样做:

console.log(JSON.stringify(arrayToList([1, 2, 3, 4, 5])));

在使用 console.log() 之前手动将整个内容转换为字符串。