Search code examples
javascriptnode.jsstring-concatenationpretty-print

Javascript console.log(object) vs. concatenating string


I'm running this in node.js:

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

What I don't understand is why console.log(x) "pretty-prints" the object, whereas string concatenation "ugly-prints" it. And more importantly, what's the best way to make it print hmm: { foo: 'bar' }?


Solution

  • The + x coerces the object x into a string, which is just [object Object]:

    http://jsfiddle.net/Ze32g/

    The pretty printing is a very nice and probably very complex underlying code that someone implemented as part of the console object and the log method.

    Try this:

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