Javascript console.log(对象)与串联字符串

Joh*_*nck 34 javascript pretty-print string-concatenation node.js

我在node.js中运行它:

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

我不明白的是为什么console.log(x)"漂亮地打印"对象,而字符串连接"丑陋打印"它.更重要的是,什么是打印的最佳方式hmm: { foo: 'bar' }

Exp*_*lls 62

+ x对象强制x转换为字符串,这只是[object Object]:

http://jsfiddle.net/Ze32g/

漂亮的打印是一个非常好的,可能非常复杂的底层代码,有人实现为console对象和log方法的一部分.

试试这个:

console.log("hmm: ", x);
Run Code Online (Sandbox Code Playgroud)

  • `console.log("嗨%s!祝你愉快!","约翰"); // 你好,约翰!祝你有愉快的一天!` (5认同)

Aar*_*ova 14

console.log函数

'console.log'是一个重载函数,它接受一个参数列表,这些参数由copy(string | number | boolean)或引用(其他所有)传递.

在通过复制传递的值的情况下,通过将其作为字符串转换来打印该值.
在通过引用传递的值的情况下,该值在浏览器认为合适时被打印.

+运算符

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

如果运算符的任一侧是字符串,则双方将被转换为字符串,并且将返回这两个字符串的串联.

console.log("hmm: " + x);
Run Code Online (Sandbox Code Playgroud)

和写作一样

console.log(String("hmm: ") + String(x));
Run Code Online (Sandbox Code Playgroud)

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

console.log("hmm: ", x);
Run Code Online (Sandbox Code Playgroud)

更多信息

有关'console.log'功能的更深入描述,请参阅:https:
//developer.mozilla.org/en-US/docs/DOM/console.log

有关加号运算符(+)的更深入说明,请参阅:http:
//www.w3schools.com/js/js_operators.asp


Ran*_*sam 6

使用JSON.stringify印刷用绳子追加对象时

console.log("Haa"+JSON.stringify(x))
Run Code Online (Sandbox Code Playgroud)