gpt4 book ai didi

javascript - 为什么同一对象的 nodejs console.log 输出格式不同?

转载 作者:行者123 更新时间:2023-11-29 21:04:55 24 4
gpt4 key购买 nike

对于下面的代码:

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.6linux

提前致谢。

最佳答案

这可能是一个错误。没有充分的理由有所不同。

为什么会这样? console.log 代表 util.format ( quite literally ), 和 format区分第一个参数的字符串(可能是格式字符串)和其他内容。你可以找到确切的算法here .基本上:

  • 当第一个参数是字符串时,占位符会被相应的值替换,然后附加其他参数。这些是 inspected当它们是对象或符号时,只是转换为字符串并以其他方式连接。
  • 当第一个参数不是字符串时,检查每个值,然后将它们连接在一起。

由于对象检查依赖typeof ,它不认为函数是对象,你的函数直接是stringified .对于其他值(例如 console.log("0", "example")console.log(0, "example") )也可以观察到类型转换和检查之间的这种差异。

关于javascript - 为什么同一对象的 nodejs console.log 输出格式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com