ES2018 新特征之:非转义序列的模板字符串

ES2018 新特性

这个 ECMAScript 提案 “Template Literal Revision” 由 Tim Disney 负责,目前已经进入 stage 4,本提案是 ECMAScript 2018(ES9) 的一部分。该提案让我们使用模板字符串的标签函数语法更加的自由。

1. 标签函数 Tagged templates

标签使您可以用函数解析模板字符串。标签函数的第一个参数包含一个字符串值的数组。其余的参数与表达式相关。最后,你的函数可以返回处理好的的字符串(或者它可以返回完全不同的东西)。

2.

是一个模板字符串的标签函数,它的作用类似于 Python 中的字符串前缀 r 和 C# 中的字符串前缀 @,是用来获取一个模板字符串的原始字面量值的。

语法:

是唯一一个内置的模板字符串标签函数。

3. 原始字符串

在标签函数的第一个参数中,存在一个特殊的属性 ,我们可以通过它来访问模板字符串的原始字符串,而不经过特殊字符的替换。

4. 带标签函数的转义序列

自 ES2016 起,带标签的模版字面量遵守以下转义序列的规则:

Unicode字符以"\u"开头,例如

Unicode码位用"\u{}"表示,例如

十六进制以"\x"开头,例如

八进制以"\"和数字开头,例如

对于每一个 ECMAScript 语法,解析器都会去查找有效的转义序列,对于无效的转义序列,直接抛出 :

5. ES2018 关于非法转义序列的修订

带标签函数的模版字符串应该允许嵌套支持常见转义序列的语言(例如 DSLs、LaTeX)。

因此 ECMAScript 2018 标准移除了对 ECMAScript 在带标签的模版字符串中转义序列的语法限制。

6. 实现

V8 - Chrome 62

SpiderMonkey - Firefox 53

JavaScriptCore - 版本未知

ChakraCore - 开发中

Babel - 7.x

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305B13FRH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券