js中的反对与单引号

时间:2017-11-02 03:52:56

标签: javascript node.js

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

3 个答案:

答案 0 :(得分:12)

反向标记允许您使用字符串模板,例如:

sides

for 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字符串模板可能比连接更快。看看以下文章中的一些硬数据:

Are ES6 template literals faster than string concatenation?

答案 1 :(得分:8)

使用反引号或单引号创建字符串之间的性能差异会非常小,以至于我认为您不应该将其视为使用其中一个或另一个的理由。 Here is some basic evidence of that

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

我不认为它会影响性能 - 但我不认为你应该这样做“只是为了保持一致”。它不一致,因为它是一个完全不同的结构 - 与import random def roll_dice(attempts,number_of_sides): for i in range(attempts): print(random.randint(1, number_of_sides)) print("thats all") while循环相同。它们是用于不同工作的不同工具。

答案 2 :(得分:5)

返回刻度(``)称为模板文字。他们是ES6的一部分。 区别在于:

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

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