簡體   English   中英

為什么node.js中的console.log在util.inspect中不能正確打印數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM