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当您连接它时,您正在将它转换为字符串。