我在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' }
的最佳方式是什么?
答案 0 :(得分:61)
+ x
将对象x
强制转换为字符串,只是[object Object]
:
漂亮的打印是一个非常好的,可能非常复杂的底层代码,有人将其作为console
对象和log
方法的一部分实现。
试试这个:
console.log("hmm: ", x);
答案 1 :(得分:14)
'console.log'是一个重载函数,它接受一个参数列表,这些参数由copy(string | number | boolean)或引用(其他所有)传递。
对于通过复制传递的值,通过将其作为字符串转换来打印该值 在通过引用传递的值的情况下,该值在浏览器认为合适时打印出来。
加号运算符(+)重载。 当运算符的两边都是数字时,返回两个运算符的总和。
如果运算符的任一侧是字符串,则双方将被转换为字符串,并且将返回这两个字符串的串联。
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
答案 2 :(得分:6)
使用字符串追加
打印对象时使用JSON.stringify
console.log("Haa"+JSON.stringify(x))
答案 3 :(得分:2)
您有多种选择:
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.所以,我会留给任何Google员工。
编辑2:我不是疯了,我只是需要睡觉。你确实写了Node.js.我打算将它添加为标签。
答案 4 :(得分:1)
您可以使用console.log(JSON.stringify(yourObject));
打印对象。可以!