在没有模板化表达式的情况下使用ES6模板文字语法是否有缺点?

Jos*_*den 19 javascript string ecmascript-6 template-literals

有没有理由(性能或其他)不对javascript源文件中的所有字符串使用反引号模板文字语法?如果是这样,什么?

我应该更喜欢这个:

var str1 = 'this is a string';
Run Code Online (Sandbox Code Playgroud)

在这?

var str2 = `this is another string`;
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 12

不使用它们的最重要原因是并非所有环境都支持ES6.

当然,这根本不会影响你,但仍然是:YAGNI.除非您需要插值,多行文字或未转义的引号和撇号,否则请勿使用模板文字.很多关于何时在JavaScript中使用双引号或单引号的论据随身携带.与往常一样,保持代码库的一致性,并且只使用一个字符串文字样式,而不需要特殊字符串.

  • 投反对票,因为如果他还没有使用反引号(以及 ES6),OP 就不会问这个问题。最重要的是,您在建议两种引用风格时谈论一致性。您的答案似乎没有一个令人信服的论据,即不要一直使用反引号,也没有强调使用一种与另一种的权衡。 (11认同)
  • @EECOLOR除了在ES6中引入的模板字符串之外,实际上没有特定于模板字符串的参数(2018年确实不再引人注目),每种报价风格的权衡取舍都非常相似.这就是我将另一个问题联系起来的原因 - 你可以在[这个答案]中找到一些明确拼写出来的参数(/sf/answers/1262883191/). (2认同)

Tim*_*ann 10

在代码方面,没有特定的缺点。JS 引擎足够聪明,不会在字符串文字和没有变量的模板文字之间产生性能差异。

事实上,我什至可能会争辩说总是使用模板文字是好的:

  • 您已经可以使用单引号或双引号来创建字符串。选择哪一个在很大程度上是任意的,你只需要坚持一个。但是,如果您的字符串包含您选择的字符串标记,则鼓励使用另一个引号,即如果您选择了',您仍然会使用"don't argue"代替'don\'t argue'。但是,反引号在普通语言和字符串中非常少见,因此您实际上很少需要使用其他字符串文字语法或使用转义码,这很好。

    例如,您将被迫使用转义序列来获得she said: "Don't do this!"带有双引号或单引号的字符串,但在使用反引号时则不必这样做。

  • 如果以后要在字符串中使用变量,则不必进行转换。

然而,这些都是非常微弱的优势。但还是没有,所以我主要使用模板文字。

一个真实但在我看来可以忽略的反对意见是必须支持不支持字符串文字的环境。如果你有这些,你就会知道并且不会问这个问题。


Tig*_*ear 8

始终使用模板文字。在这种情况下,YAGNI 是不正确的。你绝对会需要它。在某些时候,您将向字符串添加一个变量或新行,此时您需要将单引号更改为反引号,或者使用可怕的“+”。