以下代码:
function F() {
}
// Define class fields for F
F.value = [ 1, 2, 3, 4 ];
console.log('F', F); // F function F() { }
console.log(F); // { [Function: F] value: [ 1, 2, 3, 4 ] }
在上面的代码中,我为构造函数F
定义了类字段。当我在console.log()
个不同的参数列表中node
时,F
的打印结果会有所不同。
一个是function F() { }
,另一个是{ [Function: F] value: [ 1, 2, 3, 4 ] }
。那就是为什么呢?
但是浏览器控制台中的输出相同。
我的node
版本为v4.2.6
和linux
。
提前致谢。
答案 0 :(得分:2)
这可能是一个错误。没有充分的理由可以区别开来。
为什么会这样? console.log
代表util.format
(quite literally),format
区分第一个参数的字符串(可能是格式字符串)和其他内容。您可以找到确切的算法here。基本上是:
由于对象检查依赖于typeof
,因此它不会将函数视为对象,并且您的函数直接stringified。对于其他值,也可以观察到铸造和检查之间的差异(例如console.log("0", "example")
与console.log(0, "example")
)。