控制台在concat模式下记录函数会打印函数实现

时间:2017-08-28 17:34:00

标签: javascript node.js

这是一个简单的例子

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开发人员面板中也会发生相同的类似行为。

1 个答案:

答案 0 :(得分:0)

在阅读了一下之后,我相信这是由函数toString引起的。当您使用console.log("", foo)时,console.log将所有参数字符串化并对其进行连接,因此会调用foo.toString

如果您同时执行console.log(foo.toString())

,也可以看到相同的行为

另外,您可以替换toString

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

foo.toString = () => 'replaced';

现在你得到(在NodeJS终端中):

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