繁体   English   中英

为什么node.js中的console.log在util.inspect中不能正确打印数组

[英]Why console.log in node.js doesn't print array correctly while util.inspect does

以下两行产生以下输出:

console.log('arr:'+arr);
console.log('inspected arr:'+util.inspect(arr));

arr:,testUser2
检查了arr:[null,'testUser2']

是因为它以空值开头吗? 它甚至没有显示为数组,这非常令人困惑。
它实际上是一个数组!

那是因为你在数组中有null并且当你说

"somestring" + array

它将使用toString()将数组转换为字符串,因此null将被转换为""

只需在浏览器控制台[null,1,2].toString()尝试,它将打印",1,2"

虽然Util.inspect返回对象的正确字符串表示形式。 它将所有内容打印为JSON.stringify()类的字符串。

JS偶尔会强制使用强制规则。

将其强制转换为字符串后,括号将消失,并且零值表示空值。 inspect是指定您希望其打印出“自然”表示形式的正确方法。

那么,当您尝试打印出数组,如果值是数组中的空空字符串是正确的按在ECMAScript规范这里

当您尝试像这样连接数组时,实际上您要做的是隐式调用数组对象中的toString函数,这将调用数组对象中的join函数。 并且,在join规范中,该函数应检查null值,如果为null ,则应返回空字符串。

这取自文档。

如果element0未定义或为null,则使R为空String;否则为0。 否则,使R为ToString(element0)。

在您的情况下,我想使用util.inspect()会更好,因为它确实可以打印更多的“漂亮”信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM