![](/img/trans.png)
[英]Why console.log in node.js doesn't print array correctly while util.inspect does
[英]node console.log / util.inspect for nested Object / Array
對於嵌套的對象或數組
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' } } } } } }
涼。 這就是我要的!
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' } } } } } }
使用JSON.stringify
:
var obj = {
foo:
{
foo:
{
foo:
{
foo:
{
foo:
{
foo: 'foo'
}
}
}
}
}
};
console.log(JSON.stringify(obj));
結果:
{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.