我在 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' }
?
我在 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]
:
漂亮的打印是一个非常好的并且可能非常复杂的底层代码,有人将其作为console
对象和log
方法的一部分来实现。
试试这个:
console.log("hmm: ", x);
'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。我要把它添加为标签。