【问题标题】:What determines how a variable is printed in the console?什么决定了如何在控制台中打印变量?
【发布时间】:2017-06-03 03:55:17
【问题描述】:

在 Chrome DevTools 中,已解决的承诺将返回一个可以展开和折叠的交互式对象,如下所示;

> Promise.resolve('foo')
< ▶ Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "foo"}

在Node中,一个resolved的promise会返回一个字符串;

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

在可视化变量时,由什么以及谁决定返回到控制台的内容?这是否以某种方式标准化?

【问题讨论】:

  • .. 并且 Internet Explorer 打印“[Object object]”。感谢 Internet Explorer!
  • 不,它不是标准化的。没什么好说的了。
  • 我想节点在内部使用util.inspect。 Chrome 有自己的魔力,而 IE 只是调用 Symbol.toStringTag 属性?

标签: javascript read-eval-print-loop


【解决方案1】:

所以你可以格式化你的控制台日志,这里是基础https://developer.mozilla.org/en-US/docs/Web/API/Console/log

你也可以做颜色之类的,这里讨论:

How do I create formatted javascript console log messages

同样从你的例子来看,这可能是两个完全不同的 Promise (librabies) 被返回。你运行的是什么版本的 Node?​​p>

每个浏览器也以不同的方式实现控制台,因此您不会在浏览器之间或从 chrome 到节点获得相同的响应。有一些节点库可以让你添加到你的控制台(格式化等),但我认为没有任何东西可以让它交互(因为你必须让 ui 交互,这对于浏览器是正确的,但不是输出一个终端)

【讨论】:

  • 我使用原生 (v8) Promises。 Chrome 中的 V8 5.5.372.33 和 Node 中的 V8 5.4.500.36
猜你喜欢
  • 2014-08-22
  • 2011-02-14
  • 1970-01-01
  • 2018-11-24
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
相关资源
最近更新 更多