js中的反对与单引号

har*_*ant 12 javascript node.js

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

Nil*_*ner 15

back-tick允许您使用字符串模板,例如:

var value = 4;
var str = `text with a ${value}`
// str will be  : 'text with a 4'
Run Code Online (Sandbox Code Playgroud)

对于"vs '我说看看这篇文章:https://stackoverflow.com/a/9959952/6739517

至于性能,如果你只是对普通字符串使用反向标记,它似乎是相同的.但是,在构建字符串时,看起来连接仍然是可行的方法.看看这里:

2018更新:在某些情况下,似乎ES6字符串模板可能比连接更快.看看以下帖子中的一些硬数字:

ES6模板文字比字符串连接更快吗?


Sha*_*dow 9

使用反引号或单引号创建字符串之间的性能差异会非常小,以至于我认为您不应该将其视为使用其中一个或另一个的理由.以下是一些基本证据.

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

我不认为它会影响性能 - 但我不认为你应该这样做"只是为了保持一致".它不一致,因为它是一个完全不同的结构 - 与a whileforloop 相同.它们是适用于不同工作的不同工具.

  • 这是唯一真正回答问题“精神”的答案! (4认同)

小智 5

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

var name = "world";
var greetES5 = 'Hello '+name;//using single quote
var greetES6 = `Hello ${name}`;//using ticks
Run Code Online (Sandbox Code Playgroud)

您可以在此处参考MDN 以获得更多信息。

  • 这部分我已经了解了,但这不是我要的。我的问题是`x` ==`\`test \``和`x ='test'`(不涉及变量转换)之间有什么性能差异吗?如果没有区别,则最好在整个代码中使用反引号(`)以保持一致性和可维护性。 (2认同)