NodeJS 为什么ES6模板文字显示对象的内部?下面的例子[关闭]

jgwigjjp  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(105)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

5天前关闭。
Improve this question
我正在运行Nodejs v19.8.1,我通过websockets接收了这个对象。我对使用反引号和不使用反引号的区别感到困惑。我有一个例子如下。
这个对象是我从Binance收到的。

{
  e: 'kline',
  E: 1680231653027,
  s: 'BNBBUSD',
  k: {
    t: 1680231600000,
    T: 1680231659999,
    s: 'BNBBUSD',
    i: '1m',
    ...
    B: '0'
  }
}

当我奔跑

console.log(`${tick}`)

,我得到

[object Object]

当我奔跑

console.log(tick)

,我得到

{
  e: 'kline',
  E: 1680231653027,
  s: 'BNBBUSD',
  k: {
    t: 1680231600000,
    T: 1680231659999,
    s: 'BNBBUSD',
    i: '1m',
    f: 202406712,
    L: 202406740,
    o: '316.70000000',
    c: '316.80000000',
    h: '316.80000000',
    l: '316.60000000',
    v: '7.51000000',
    n: 29,
    x: false,
    q: '2378.50740000',
    V: '6.75400000',
    Q: '2139.10260000',
    B: '0'
  }
}
j91ykkif

j91ykkif1#

要将template literals的序列化字符串表示打印到控制台,您可能需要使用模块node:util中的inspect函数。
你可以创建一个自定义的标记模板函数,它像这样使用它:
example.mjs

import { inspect } from "node:util";

function print(strings, ...args) {
  let str = strings[0] ?? "";

  for (let i = 0; i < args.length; i += 1) {
    str += strings[i + 1];
    str += inspect(args[i], { colors: true });
  }

  console.log(str);
}

const tick = {
  e: "kline",
  E: 1680231653027,
  s: "BNBBUSD",
  k: {
    t: 1680231600000,
    T: 1680231659999,
    s: "BNBBUSD",
    i: "1m",
    f: 202406712,
    L: 202406740,
    o: "316.70000000",
    c: "316.80000000",
    h: "316.80000000",
    l: "316.60000000",
    v: "7.51000000",
    n: 29,
    x: false,
    q: "2378.50740000",
    V: "6.75400000",
    Q: "2139.10260000",
    B: "0",
  },
};

print`Tick: ${tick}`; /* Outputs:
Tick: {
  e: 'kline',
  E: 1680231653027,
  s: 'BNBBUSD',
  k: {
    t: 1680231600000,
    T: 1680231659999,
    s: 'BNBBUSD',
    i: '1m',
    f: 202406712,
    L: 202406740,
    o: '316.70000000',
    c: '316.80000000',
    h: '316.80000000',
    l: '316.60000000',
    v: '7.51000000',
    n: 29,
    x: false,
    q: '2378.50740000',
    V: '6.75400000',
    Q: '2139.10260000',
    B: '0'
  }
}
*/

TypeScript playground中的代码
在航站楼内:

$ node --version
v18.15.0

$ node example.mjs
Tick: {
  e: 'kline',
  E: 1680231653027,
  s: 'BNBBUSD',
  k: {
    t: 1680231600000,
    T: 1680231659999,
    s: 'BNBBUSD',
    i: '1m',
    f: 202406712,
    L: 202406740,
    o: '316.70000000',
    c: '316.80000000',
    h: '316.80000000',
    l: '316.60000000',
    v: '7.51000000',
    n: 29,
    x: false,
    q: '2378.50740000',
    V: '6.75400000',
    Q: '2139.10260000',
    B: '0'
  }
}

相关问题