为什么node.js中的console.log在util.inspect中没有正确地打印数组
以下两行产生以下输出:
console.log('arr:'+arr); console.log('inspected arr:'+util.inspect(arr));
ARR:,testUser2
检查arr:[null,'testUser2']
是因为它是从一个空值开始的? 它甚至不显示为一个数组是非常令人困惑的。
它实际上是一个数组虽然!
那是因为你在数组中有null
,当你说
"somestring" + array
它使用toString()
将数组转换为string,所以null
将被转换为""
。
只要尝试在浏览器控制台[null,1,2].toString()
它将打印",1,2"
。
而Util.inspect返回对象的正确string表示forms。 它将打印每一个string的东西像JSON.stringify()
。
JS的偶尔强制规则。
一旦将它强制转换为一个string,括号就消失,空值由零个字符表示。 inspect
是指定你想要它打印出它的“自然”表示的正确方法。
那么,如果数组中的值为null,则尝试打印数组时,空string按照ECMAScript中的规范
当你尝试像这样连接数组时,实际上你所做的就是隐式地调用数组对象中的toString
函数,它将调用数组对象中的join
函数。 而且,在join
规范中,函数应该检查null
值,如果为null
那么它应该返回空string。
这是从文档中获取的。
如果element0是未定义的或null,则让R为空string; 否则,设R是ToString(element0)。
在你的情况下,我想使用util.inspect()
会更好,因为它打印更多“漂亮”的信息。