Javascript 为什么console.log in node.js不';当util.inspect执行时,无法正确打印数组

Javascript 为什么console.log in node.js不';当util.inspect执行时,无法正确打印数组,javascript,node.js,Javascript,Node.js,以下两行产生以下输出: console.log('arr:'+arr); console.log('inspected arr:'+util.inspect(arr)); arr:,testUser2 已检查的arr:[null,'testUser2'] 是因为它以空值开头吗?它甚至没有显示为数组,这让人非常困惑。 它实际上是一个数组 这是因为数组中有null,当您说 "somestring" + array 它使用toString()将数组转换为字符串,因此null将转换为“” 只需在浏览

以下两行产生以下输出:

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“


While Util.inspect返回对象的正确字符串表示形式。它将把每一个东西都打印成字符串,比如
JSON.stringify()

,这是因为数组中有
null
,当你说

"somestring" + array
它使用
toString()
将数组转换为字符串,因此
null
将转换为
“”

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


While Util.inspect返回对象的正确字符串表示形式。在这里,它将把所有东西都打印成字符串,比如
JSON.stringify()

JS的强制规则


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

JS的偶尔wat强制规则


将其强制为字符串后,括号将消失,空值由零个字符表示
inspect
是指定要打印它的“自然”表示形式的正确方法。

如果数组中的值为null,则尝试打印数组时的空字符串符合ECMAScript中的规范

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

这是从文件中获取的

如果element0未定义或为null,则R为空字符串;否则,设R为ToString(element0)


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

如果数组中的值为null,那么尝试打印数组时的空字符串符合ECMAScript中的规范

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

这是从文件中获取的

如果element0未定义或为null,则R为空字符串;否则,设R为ToString(element0)


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

但是如果在节点shell中运行console.log([null,'a']),它会打印correctly@arisalexis连接时将其强制转换为字符串。但是如果在节点shell中运行console.log([null,'a'])它打印correctly@arisalexis当您连接它时,您正在将它转换为字符串。