簡體   English   中英

Javascript console.log(object) 與連接字符串

[英]Javascript console.log(object) vs. concatenating string

我在 node.js 中運行它:

> x = { 'foo' : 'bar' }
{ foo: 'bar' }
> console.log(x)
{ foo: 'bar' }
undefined
> console.log("hmm: " + x)
hmm: [object Object]
undefined

我不明白的是為什么console.log(x) “漂亮地打印”了對象,而字符串連接“丑陋地打印”了它。 更重要的是,讓它打印hmm: { foo: 'bar' }的最佳方法是什么?

+ x脅迫的對象x為一個字符串,這僅僅是[object Object]

http://jsfiddle.net/Ze32g/

漂亮的打印是一個非常好的並且可能非常復雜的底層代碼,有人將其作為console對象和log方法的一部分實現。

嘗試這個:

console.log("hmm: ", x);

console.log 函數

'console.log' 是一個重載函數,它接受通過復制(字符串|數字|布爾值)或通過引用(其他所有方式)傳遞的參數列表。

在通過復制傳遞值的情況下,該值通過將其轉換為字符串來打印。
在通過引用傳遞值的情況下,該值會按照瀏覽器認為合適的方式打印出來。

+ 運算符

加號運算符 (+) 已重載。 當運算符兩邊都是數字時,返回兩個運算符之和。

如果運算符的任一側是字符串,則兩側都將轉換為字符串,並返回這兩個字符串的連接。

console.log("hmm: " + x);

和寫作一樣

console.log(String("hmm: ") + String(x));

解決方案

通過用逗號 (,) 交換加號 (+) 來防止隱式字符串轉換

console.log("hmm: ", x);

更多信息

有關“console.log”功能的更深入描述,請參閱:
https://developer.mozilla.org/en-US/docs/DOM/console.log

有關加號運算符 (+) 的更深入描述,請參閱:
http://www.w3schools.com/js/js_operators.asp

打印附加字符串的對象時使用JSON.stringify

console.log("Haa"+JSON.stringify(x))

你可以使用console.log(JSON.stringify(yourObject)); 打印您的對象。 這行得通!

您有多種選擇:

process.stdout.write('hmm: ')
console.dir(x)

其他...

var util = require('util')
process.stdout.write('hmm: ')
console.log(util.inspect(x, true, 10, true))

有關更多信息,請參閱util.inspect文檔。

編輯:抱歉,我以為我讀了 Node.js。 這僅對 Node.js 有效。 所以,我會把它留給任何谷歌員工。

Edit2:我沒瘋,我只是需要睡覺。 你確實寫了 Node.js。 我要把它作為標簽添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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