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()
之前手动将整个内容转换为字符串。
我正在从一本名为 '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()
之前手动将整个内容转换为字符串。