2017-03-29 116 views
2

我已经为单人或双人qoutes的字符串字面量的JavaScript(JSON除外)的讨论,似乎一个的选择或其他纯粹是任意的,有两个澄清:现在我们应该使用反引号来引用字符串文字吗?

  • 使用所有代码都使用相同的约定(没有var a="a", b='b')。
  • 您可以灵活地适应文字,否则这些文字会需要转义很多字符,从而伤害可读性(不是its='it\'s'也不是normal="the \"normal\" thing")。

但是我们现在另一个qouting角色,那就是在模板文本中使用的反引号,这本身是非常不经常在普通的文本或代码比其他两个使用,因此需要较少的转义:

youre = `You're so "normal"!` 

对于那些会产生不需要的嵌入式表达式的情况,至多需要留出美元符号。

我试图想到避免使用反码作为编码标准的原因,取而代之的是其他两种。

  • 是否会损害性能?我想不是真的(我试图测量,但得到inconclusive results)。如果性能仅取决于要逃脱的字符数量,则可以看到来自边缘案例(如youre)或带有换行符的文字的改进。
  • 打字速度较慢?这取决于你的键盘。在我的(西班牙语)中,双引号和单引号都在数字行中,而且难以触及,而双引号要求我按Shift键,而反引号只是远离手指的一个键,但需要按Space键,所以它很难说这将是我的。
  • 浏览器兼容性?也许吧。但是时间解决了这个问题,并且在某些情况下它不相关,比如任何打算在Node.js中运行的东西。

是否有其他原因可能会阻止(或鼓励)将反引号设置为项目编码标准中字符串文字的qoute?

+0

上的NodeJS – ZiTAL

+0

@ZiTAL节点的当前版本LTS工作不工作(了好一会儿了) – Kos

+0

''v0.10.29'语法错误:意外的令牌ILLEGAL' – ZiTAL

回答

1

使用反斜杠字符串允许创建模板字符串。

const create = word => `Hello ${word}` 

console.log(create("World")); // Hello World 

所以这是创建/内插字符串的更简洁的方法。由于转译器/解释器会将其重新转换为如下形式:"Hello" + word对性能的影响应取决于要组合的字符串数量和字符串的总长度。

无论你选择哪一种»字符串类型«如果你需要在它的引号字符,则需要对其进行转义:

console.log(```) // SyntaxError 
console.log(`\``) // ` 

因此,所有的一切,模板字符串是伟大的模板,所以使用他们如果你喜欢它,但它不会有任何区别,当涉及到逃跑,再加上,你也必须逃避$的迹象。

+0

单个'$'不需要转义,只有在后面加上'{'。 – dmcontador

相关问题