Javascript 什么决定了变量在控制台中的打印方式?

Javascript 什么决定了变量在控制台中的打印方式?,javascript,read-eval-print-loop,Javascript,Read Eval Print Loop,在ChromeDevTools中,解析的promise将返回一个可以展开和折叠的交互式对象,如下所示 > Promise.resolve('foo') < ▶ Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "foo"} >Promise.resolve('foo')) < ▶ 承诺{[[PromiseStatus]]:“已解决”,[[PromiseValue]]:“foo”} 在节点中,已解析的承诺将返回字符串

在ChromeDevTools中,解析的promise将返回一个可以展开和折叠的交互式对象,如下所示

> Promise.resolve('foo')
< ▶ Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "foo"}
>Promise.resolve('foo'))
< ▶ 承诺{[[PromiseStatus]]:“已解决”,[[PromiseValue]]:“foo”}
在节点中,已解析的承诺将返回字符串

> Promise.resolve('foo')
< Promise { 'x' }
>Promise.resolve('foo'))

在可视化变量时,什么和谁决定返回控制台的内容?这是某种程度上的标准化吗?

因此,您可以格式化控制台日志,下面是一些基本信息

您还可以制作颜色等,这里将讨论这一点:

同样从你的例子来看,这可能是两个完全不同的承诺(天秤座)被返回。您正在运行哪个版本的节点


每个浏览器也以不同的方式实现控制台,所以您不会在不同浏览器之间或从chrome到节点之间得到相同的响应。有一些节点库允许您添加到控制台中(格式化等),但我认为没有任何节点库可以使其具有交互性(因为您必须使ui具有交互性,这对于浏览器来说是正确的,但对于终端中的输出则不是如此)

。。Internet Explorer打印“[对象]”。谢谢Internet Explorer!不,它不是标准化的。没什么要说的了。我想Node在内部使用
util.inspect
。Chrome有自己的魔力,而IE只是调用
符号。toStringTag
属性?我使用原生(v8)承诺<铬合金中的代码>V8 5.5.372.33
,节点中的代码>V8 5.4.500.36。