在node.js(服务器端)上工作,我想知道我是否应该一直使用所有反引号(`)而不是常规引号(“或'),因为它会使代码保持一致。是否有任何具体原因为不同的事物保留不同类型的引号。如果所有非替代引号都转换为反引号,是否会影响性能?
3 回答
反引号允许您使用字符串模板,例如:
var value = 4;
var str = `text with a ${value}`
// str will be : 'text with a 4'
对于"
vs'
我说看看这篇文章:https ://stackoverflow.com/a/9959952/6739517
至于性能,如果您只是对纯字符串使用反引号,它似乎是一样的。但是,在构建字符串时,看起来连接仍然是要走的路。看看这里:
2018 年更新:在某些情况下,ES6 字符串模板似乎比串联更快。请查看以下帖子以获取一些硬数字:
2020 年更新:一般而言,在考虑使用哪种类型的报价时,您不应该担心性能。可能会有微小的差异,但正如许多人所指出的那样,这些都是如此微小的改进,您可能最好优化代码而不是考虑使用哪个字符。也就是说,这并不能真正回答一致性问题。对我来说,我通常遵循Airbnb 的风格指南。也就是说,字符串总是用单引号 (') 声明,除非你需要构建一个字符串,那么你应该避免连接,并且只使用带反引号 (`) 的字符串模板。最后,双引号是为 JSON 和 HTML 保留的。
使用反引号或单引号创建字符串之间的性能差异非常小,我认为您不应该将其视为使用其中一个或另一个的理由。这里有一些基本的证据。
但是-我反对将模板字符串用于不是模板的字符串,因为很明显,当您使用单引号时,不会发生模板化。如果我看到一个带有反引号的字符串 - 我会立即开始寻找要替换的内容,或者为什么使用它们。相比之下,单引号就很清楚了。
我认为这不会影响性能 - 但我认为您也不应该“只是为了保持一致”而这样做。它并不一致,因为它是一个完全不同的结构——与while
orfor
循环相同。它们是用于不同工作的不同工具。
反引号(``)被称为模板文字。它们是 ES6 的一部分。区别在于:
var name = "world";
var greetES5 = 'Hello '+name;//using single quote
var greetES6 = `Hello ${name}`;//using ticks
您可以在此处参考 MDN以获取更多信息。