以concat模式logging函数的控制台打印函数实现

这是一个简单的例子

function foo() { const bar = '123'; return bar; } 

以下是console.log在NodeJS中的行为和打印方式:

 > console.log(foo) [Function: foo] > console.log("", foo) function foo() { const bar = '123'; return bar; } 

这是为什么? 有没有办法隐藏它,即只得到[Function: foo]打印。

Chrome开发人员面板中也出现了相同的行为。

读了一会之后,我相信这是由于toString的函数。 当你使用console.log("", foo)console.log所有的参数string化并且连接它们,因此调用foo.toString

你也可以看到相同的行为,如果你也做console.log(foo.toString())

作为进一步的补充,你可以replacetoString

 function foo() { const bar = '123'; return bar; } foo.toString = () => 'replaced'; 

现在你得到(在NodeJSterminal):

 > console.log(foo) { [Function: foo] toString: [Function] } undefined > console.log("", foo) replaced undefined > console.log(foo.toString()) replaced