雄辩的Javascript:练习:列表
我正在从一本叫做“雄辩的JavaScript”的书中学习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
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看起来像:-)节点在扩展其打印的对象时受到限制;在浏览器/调试器中,通常可以交互地展开它们。