Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
雄辩的Javascript:练习:列表_Javascript_Node.js_Console.log - Fatal编程技术网

雄辩的Javascript:练习:列表

雄辩的Javascript:练习:列表,javascript,node.js,console.log,Javascript,Node.js,Console.log,我正在从一本叫做“雄辩的JavaScript”的书中学习JavaScript 我试图解决这里描述的练习: 我设法找出了这段代码的工作原理: function arrayToList(array) { var list = null; for (var i = array.length - 1; i >= 0; i--) list = { value: array[i], rest: list }; return list; } co

我正在从一本叫做“雄辩的JavaScript”的书中学习JavaScript

我试图解决这里描述的练习:

我设法找出了这段代码的工作原理:

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]));
结果:{value:1,rest:{value:2,rest:{value:3,rest:null}

到目前为止,一切都很好,根据这本书,这是正确的解决方案。但是

当我尝试运行相同的东西,但使用更长的数组时,我们可以这样说:

console.log(arrayToList([1, 2, 3, 4, 5]));
结果是:{value:1,rest:{value:2,rest:{value:3,rest:[Object]}


为什么会这样?我的代码错了吗?

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

如果您确实设置了一个断点并在调试器中检查了变量,您将看到可以将嵌套级别扩展到最深的位置,并查看所有内容

或者,您可以这样做:

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

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

您只需在+1OP上击败我,就可以
JSON.stringify
结果以获得更大的画面。哦!就这么简单吧?多谢各位@安迪-我采纳了你关于
JSON.stringify()
的建议。你是在nodejs中执行这个操作的吗?或者浏览器控制台?Windows powershellYeah中的nodejs看起来像:-)节点在扩展其打印的对象时受到限制;在浏览器/调试器中,通常可以交互地展开它们。