是否有理由(性能或其他)不对javascript源文件中的所有字符串使用反引号模板文字语法?如果是这样,是什么?
我应该更喜欢这个:
var str1 = 'this is a string';
在这个?
var str2 = `this is another string`;
是否有理由(性能或其他)不对javascript源文件中的所有字符串使用反引号模板文字语法?如果是这样,是什么?
我应该更喜欢这个:
var str1 = 'this is a string';
在这个?
var str2 = `this is another string`;
不使用它们的最重要原因是并非所有环境都支持 ES6。
当然,这可能根本不会影响您,但仍然:YAGNI。不要使用模板文字,除非您需要插值、多行文字或未转义的引号和撇号。很多参数来自何时在 JavaScript 中使用双引号或单引号?结转为好。与往常一样,保持您的代码库一致,并且只使用一种不需要特殊的字符串文字样式。
代码方面,没有特定的缺点。JS 引擎足够聪明,不会在字符串文字和没有变量的模板文字之间产生性能差异。
事实上,我什至可能会争辩说总是使用模板文字是件好事:
您已经可以使用单引号或双引号来创建字符串。选择哪一个在很大程度上是任意的,你只需要坚持一个。但是,如果您的字符串包含您选择的字符串标记,则鼓励使用另一个引号,即如果您选择'
,您仍然会"don't argue"
使用'don\'t argue'
. 但是,反引号在普通语言和字符串中非常少见,因此您实际上很少需要使用另一种字符串文字语法或使用转义码,这很好。
例如,您将被迫使用转义序列来使字符串she said: "Don't do this!"
带有双引号或单引号,但在使用反引号时您不必这样做。
然而,这些都是非常微弱的优势。但仍然多于没有,所以我主要使用模板文字。
一个真实但在我看来可以忽略的反对意见是必须支持不支持字符串文字的环境。如果你有这些,你就会知道并且不会问这个问题。
始终使用模板文字。在这种情况下,YAGNI 是不正确的。你绝对会需要它。在某些时候,您将在字符串中添加一个变量或新行,此时您需要将单引号更改为反引号,或者使用可怕的“+”。
当值用于外部使用时要小心。我们与 Tealium 合作进行营销分析,它目前不支持 ES6 模板文字。包含模板文字(又名字符串模板)的事件数据将导致 Tealium 脚本出错。