[英]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.