Javascript `console.log([])`和` console.log([].toString())`提供不同的输出

Javascript `console.log([])`和` console.log([].toString())`提供不同的输出,javascript,node.js,Javascript,Node.js,我注意到,在NodeJS中,console.log([])和console.log([].toString())分别产生[]和一个空白字符串。我想知道为什么会这样,以及如何将console.log([])的输出作为字符串 我知道对于数组,我可以简单地用括号将.toString()括起来[],但是对于其他构造的对象,比如说一个缓冲区: var b = new Buffer('hi'); console.log(b); // <Buffer 68 69> console.log(b.t

我注意到,在NodeJS中,
console.log([])
console.log([].toString())
分别产生
[]
和一个空白字符串。我想知道为什么会这样,以及如何将
console.log([])
的输出作为字符串

我知道对于数组,我可以简单地用括号将
.toString()
括起来
[]
,但是对于其他构造的对象,比如说一个
缓冲区

var b = new Buffer('hi');

console.log(b); // <Buffer 68 69>
console.log(b.toString()); // hi
console.log('' + b); // hi
var b=新缓冲区('hi');
控制台日志(b);//
console.log(b.toString());//你好
控制台日志(“”+b);//你好
是否可以将裸露的
console.log(b)
输出作为字符串获取,以便我可以将其与另一个字符串连接起来


谢谢。

我猜您使用的是node.js

阅读文档。使用

所以答案是:

var util = require('util');
var b = new Buffer('hi');
var str = util.format(b);

不幸的是,我试图以字符串形式获取
console.log
的行为。我已经编辑了我的问题以反映我的意图。不会
b.toString
打印
[函数]
?哎呀,我是说
toString()
,我已经更新了我的问题。控制台嗅探彩色显示的类型。有些人甚至嗅探原型方法并将它们潜入视觉阵列表示中……你是个英雄,@alexeten。我会接受这个答案,当它允许我。