Javascript console.log(object) vs. concatenating string

Javascript console.log(object) vs. concatenating string

本文关键字:vs concatenating string object console log Javascript      更新时间:2023-09-26

我在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);

控制台.log函数

"console.log"是一个重载函数,它接受通过复制(字符串|数字|布尔值)或引用(其他所有内容)传递的参数列表。

对于通过复制传递的值,通过将值转换为字符串来打印该值。
对于通过引用传递的值,该值会按照浏览器认为合适的方式打印出来。

+ 运算符

加号运算符 (+) 重载。当运算符的两边都是数字时,返回两个运算符的总和。

如果运算符的任一端是字符串,则两端都将被强制转换为字符串,并且将返回这两个字符串的串联。

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

和写作一样

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

溶液

通过将加号 (+) 与逗号 (,) 交换来防止隐式字符串转换

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

更多信息

有关"控制台.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。所以,我会把它留给任何谷歌员工。

编辑2:我没有疯,我只是需要睡觉。你确实写了 Node.js。我要将其添加为标签。