我们现在应该使用反引号来引用字符串文字吗?

dmcontador

我一直在讨论Java脚本(不包括JSON)中的字符串文字的单qoutes或双qoutes的讨论,似乎选择一个或另一个完全是任意的,有两个说明:

  • 在所有代码上使用相同的约定(no var a="a", b='b')。
  • 您可以灵活地容纳原本需要转义许多字符,损害可读性的文字(noits='it\'s'normal="the \"normal\" thing")。

但是,我们现在有了另一个qouting字符,即模板文字中使用的反引号,它本身在普通文本或代码中的使用频率远低于其他两个字符,因此所需的转义次数更少:

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

最多只能在产生不必要的嵌入表达式的情况下将美元符号隔开。

我尝试考虑避免将反引号用作编码标准的原因,以代替其他两个。

  • 这会损害性能吗?我猜不是真的(我尝试进行测量,但得出的结论尚不确定)。如果性能仅取决于要转义的字符数,则可以从边缘情况(例如youre,带有换行符的文字)中看到改进
  • 打字慢吗?这将取决于您的键盘。在我的(西班牙文)中,双引号和单引号都位于数字行中,很难触及,而双引号要求我按Shift,而反引号只是我的手指上的一个键,但需要按Space,所以它是很难说这对我来说。
  • 浏览器兼容性?大概。但是时间解决了这个问题,并且在某些情况下它是不相关的,就像打算在Node.js中运行的任何东西一样。

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

菲利普

对字符串使用反引号允许创建模板字符串。

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

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

因此,这是创建/插入字符串的更干净的方法。由于编译器/解释器会将其转换为类似内容:"Hello" + word对性能的影响应取决于要组合的字符串数和字符串的总长度。

无论您选择字符串的哪种“类型”,如果您需要其中的引号字符,都需要对它们进行转义:

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

因此,总的来说,模板字符串非常适合模板,因此可以根据需要使用模板字符串,但是对于转义,它没有任何区别,此外,您也必须转义$符号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以在Android中使用字符串资源进行代码注释吗?

我们可以停止使用字符串的 while 函数吗?

我们如何使用字符串数组的每个循环来仅打印非空元素

我们可以在模板文字(模板字符串)中使用 JS concat() 吗?

我们是否应该开始使用反勾号 (`) 一致地封闭字符串?

我们可以使用 purrr::map() 来*就地* 修改嵌套结构中的字符串吗?

我们如何使用字符串切换大小写

我们如何使用 sed 用字符串变量替换特定行?

我们如何在声明语句中使用字符串变量?

我们如何通过在 javascript 中使用正则表达式转义撇号来选择两个单引号之间的字符串?

我应该使用字符串或属性名称来初始化对象还是重要?

可以使用字符串来引用对象属性吗?

您可以在PHP中使用字符串来引用var吗?

我们到底什么时候应该使用“公共静态最终字符串”?

当我们在c中使用字符串文字初始化char数组时,是否会发生垃圾回收?

MongoDB:我应该使用字符串代替日期吗?

当我们重写toString()方法时,我们应该始终返回对象的字符串表示形式吗?

我们可以像在c中那样使用十六进制代码来键入字符串吗,就像我们像int a = 0x0000cd54;这样输入整数吗?

在Java 1.7+上,我们仍需要使用StringBuffer.append转换“此字符串” +“应该” +“被” +“加入”以获得最佳实践吗?

当我们使用名称作为字符串时调用过程吗?

我们可以使用javascript中的字符串获取类的对象吗?

如果我们更改字符串值,字符串池如何管理引用?

我们应该使用HashSet吗?

如何在zsh中用反引号引用字符串?

我们现在应该使用Java 8进行Android开发吗?

我可以引用字符串函数结果的子字符串吗?

我们如何替换列表中字符串中的引号?

我们可以使用任何预定义的函数和正则表达式替换字符串文字的特定部分吗

我们什么时候应该使用引号?