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

Javascript 在没有模板化表达式的情况下使用ES6模板文本语法是否有缺点?,javascript,string,ecmascript-6,template-literals,Javascript,String,Ecmascript 6,Template Literals,对于javascript源文件中的所有字符串,是否有不使用backtick模板文本语法的原因(性能或其他原因)?如果是,什么 我应该更喜欢这个: var str1 = 'this is a string'; 为了这个 var str2 = `this is another string`; 不使用它们的最重要原因是并非所有环境都支持ES6 当然,这可能根本不会影响您,但仍然:。不要使用模板文字,除非需要插值、多行文字或不带换行符的引号和撇号。许多论据也来自于结转。一如既往,保持代码库的一致性

对于javascript源文件中的所有字符串,是否有不使用backtick模板文本语法的原因(性能或其他原因)?如果是,什么

我应该更喜欢这个:

var str1 = 'this is a string';
为了这个

var str2 = `this is another string`;

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


当然,这可能根本不会影响您,但仍然:。不要使用模板文字,除非需要插值、多行文字或不带换行符的引号和撇号。许多论据也来自于结转。一如既往,保持代码库的一致性,在不需要特殊字符串文字样式的地方只使用一种字符串文字样式。

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

代码方面,没有具体的缺点。JS引擎足够聪明,在字符串文本和没有变量的模板文本之间没有性能差异

事实上,我甚至可能认为始终使用模板文字是很好的:

  • 您已经可以使用单引号或双引号生成字符串。选择哪一个在很大程度上是武断的,你只需要坚持一个。但是,如果您的字符串包含所选的字符串标记,则建议使用另一个引号,即如果您选择了
    ,您仍然会使用
    “不要争论”
    ,而不是
    “不要争论”
    。然而,反勾号在普通语言和字符串中非常罕见,因此实际上很少需要使用其他字符串文字语法或转义码,这是很好的

    例如,您将被迫使用转义序列使字符串
    她说:“不要这样做!”
    带有双引号或单引号,但使用反勾号时不必这样做

  • 如果将来要在字符串中使用变量,则不必进行转换
然而,这些都是非常薄弱的优势。但还是有很多,所以我主要使用模板文本


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

令牌替换操作不是免费的,你知道——即使没有可替换的令牌。但是,这看起来很小的性能损失原因是否足以在不同的语法之间交替?我相信是这样的。为正确的工作使用正确的工具。还有一个问题,如果你想让字符串一字不差地包含嵌入的标记,就必须转义它们。谢谢你的观点!如果您只在实际需要时使用模板文本语法,那么代码将更容易阅读,因为这样您就可以一目了然地知道哪些文本应该有令牌替换,哪些没有令牌替换。Downvote是因为如果OP没有使用backticks(以及使用该ES6),他不会问这个问题。除此之外,您还讨论了一致性,同时建议采用两种报价方式。您的答案似乎没有一个令人信服的论据,即不总是使用反勾号,也没有强调使用一个与另一个之间的权衡。@EECOLOR除了ES6中引入的模板字符串之外,实际上没有其他特定于模板字符串的论据(在2018年,这一论据确实不再具有说服力),每种报价风格的权衡都非常相同。这就是为什么我链接了另一个问题-你可以在中找到一些明确阐述的论点。如果你投了反对票,请留下评论!希望知道不使用字符串文字的原因,因为字符串文字是“和”“。看来你指的是模板文字。我相信这是最有用的答案,也是我一直在寻找的。您是否有任何实际的统计数据/证据支持您的说法,即字符串文字和没有插值的模板文字之间没有性能差异?另外,关于在需要撇号时使用单引号/双引号,我总是使用单引号,并使用实际正确的单引号字符作为撇号,即
,这通常更适合表示文本字符串。@spikyjt我在回答这个问题时有一个JSPerf,但我再也找不到了。谷歌的快速搜索给出了同样的结果: