node console.log / util.inspect 用于嵌套对象/数组。
node console.log / util.inspect 用于嵌套对象/数组。
这个问题已经有答案了:
针对嵌套的对象或数组
var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(obj); util.debug(obj); util.debug(util.inspect(obj));
console.log
或util.debug
+ util.inspect
{ foo: { foo: { foo: [Object] } } } DEBUG: [object Object] DEBUG: { foo: { foo: { foo: [Object] } } }
在一定深度以下,它仅显示[Object]
,没有更多的细节。
这通常在调试时很麻烦,因为我无法调查实际值。
为什么node
(或V8)这样实现?有没有任何解决方法?
谢谢。
编辑:
console.log(JSON.stringify(obj));
结果:
{\"foo\":{\"foo\":{\"foo\":{\"foo\":{\"foo\":{\"foo\":\"foo\"}}}}}}
它有点奏效,但显然整个是stringify
,而且可能我不能在调试时对所有对象输出执行此操作。不是通用的方法。
编辑2:
解决方法:
console.log(util.inspect(obj,{ depth: null }));
输出:
{ foo: { foo: { foo: { foo: { foo: { foo: \'foo\' } } } } } }
酷!这正是我想要的!
admin 更改状态以发布 2023年5月23日
util.inspect()
接受第二个 options
参数,你可以在这里指定 depth
。 默认是 2。
http://nodejs.org/api/util.html#util_util_inspect_object_options
所以:
util = require('util'); var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(util.inspect(obj, {depth:12}));
... 输出的结果是:
{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }