js中的反引号与单引号

Back-tick vs single quote in js

在 node.js(服务器端)上工作,我想知道我是否应该一直使用所有反引号 (`) 而不是常规引号 (" 或 '),因为它会使代码保持一致. 是否有任何特定原因为不同的事物保留不同类型的引号。如果所有非替代引号都转换为反引号,是否会影响性能?

反引号允许您使用字符串模板,例如:

var value = 4;
var str = `text with a ${value}`
// str will be  : 'text with a 4'

for " vs ' 我说看看这个 post:

至于性能,如果您只是对纯字符串使用反引号,似乎会是一样的。然而,在构建字符串时,看起来串联仍然是可行的方法。看这里:

2018 更新:似乎在某些情况下 ES6 字符串模板可以比连接更快。看看下面的 post 一些硬数字:

2020更新:一般来说,在考虑使用哪种类型的报价时,您不应该担心性能问题。可能会有微小的差异,但正如许多人指出的那样,这些都是如此微小的改进,您可能最好优化代码而不是考虑使用哪个字符。也就是说,这并不能真正回答一致性问题。对我来说,我一般遵循Airbnb's style guide。也就是说,字符串总是用单引号 (') 声明,除非您需要构建一个字符串,那么您应该避免连接并且只使用带有反引号 (`) 的字符串模板。最后,双引号保留给 JSON 和 HTML.

使用反引号或单引号创建字符串之间的性能差异小得离谱,我认为您不应将其视为使用其中一种的理由。 Here is some basic evidence of that.

但是 - 我反对将模板字符串用于不是模板的字符串,因为很明显当您使用单引号时不会发生模板化。如果我看到一个带有反引号的字符串——我会立即开始寻找要替换的内容,或者为什么要使用它们。相比之下,单引号就很清楚了。

我认为这不会影响性能 - 但我认为您也不应该这样做 "just to be consistent"。它不一致,因为它是一个完全不同的构造 - 与 whilefor 循环相同。它们是针对不同工作的不同工具。

反引号 (``) 称为 模板文字 。它们是 ES6 的一部分。 区别是:

var name = "world";
var greetES5 = 'Hello '+name;//using single quote
var greetES6 = `Hello ${name}`;//using ticks

您可以参考 MDN here 了解更多信息。