【问题标题】:What is more Canonical javascript, console.log还有什么是规范的 javascript,console.log
【发布时间】:2020-09-26 21:53:06
【问题描述】:

我最近开始使用 typescript 并查看了一些我最喜欢的 repos,我看到人们在 console.log 中使用反引号作为模板字符串。这对我来说似乎很奇怪,但我对规范 javascript 总体上缺乏经验。对我来说,console.log 已经通过在 cmets 之间放置空格来提供格式化机制。为什么要使用模板字符串?性能更好吗?

例子:

// set list of items
function printMyItems(item1, item2) {
    // What I have been doing
    console.log(item1, item2);

    // What I have seen
    console.log(`${item1} ${item2}`);
}

// Also variadic arguments seem to work better with the former approach.
function printMyItems(...args) {
    // What I have been doing
    console.log(...args);

    // Should I do this instead?
    console.log(`${...args}`);
}

感谢您花时间和精力阅读这篇文章。我希望我已经说清楚了。

【问题讨论】:

  • 这是什么版本的javascript?
  • 一个并不比另一个更“规范”。第一个直接记录变量。第二种方法是通过在反引号内使用${expression} 作为字符串分隔符,在字符串中包含表达式评估。您使用可以以您喜欢的格式获得输出的那个。旧版本的 javascript 不支持第二种方法。
  • 也许他们想将这些值类型转换为字符串,但这只是一个可能而且没人,但原作者可以说出他们这样做的原因。

标签: javascript node.js typescript


【解决方案1】:

在对象方面,这两种实现之间实际上存在明显差异:

var test = {a: 1};
console.log(`${test}`);
test.a = 99;
console.log(`${test}`);

var test2 = {a: 1};
console.log(test2);
test2.a = 99;
console.log(test2);

var test1 = {a: 1};
var test2 = {b: 99};
console.log(`${test1}` == `${test2}`)
console.log(test1 == test2)

【讨论】:

  • 这实际上是一个非常好的观点。我现在也开始怀疑在控制台中从日志中调试是否不如 chrome 检查器那么好。
  • @Michael 我们使用 Chrome 检查器进行大部分调试。一旦你知道对它有什么期望,它就是完全有能力的 imo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
相关资源
最近更新 更多