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