关键词

JS冷知识之不起眼但有用的String.raw方法

下面是关于JS中String.raw方法的详细讲解。

String.raw方法是什么

String.raw 是一个 ES6 引入的模板字符串的标签函数(tagged template)。当标签函数使用在模板字符串上时,该模板字符串中所有的转义字符都不会被转义,而是作为字符串的普通字符被输出。

用法示例

下面我们通过两个实际的示例来说明 String.raw 方法的使用。

示例一

在平常的开发中,我们会使用 JSON.stringify 方法将一个 JavaScript 对象序列化成为 JSON 字符串。但是,由于 JSON 字符串中的特殊字符都需要进行转义,这样会给代码的可读性带来一定的问题,而且转义字符的填写也容易出错。这时候 String.raw 方法就派上用场了。

const obj = {
  name: '张三',
  hobby: '打篮球'
}

const jsonStr = String.raw`${JSON.stringify(obj)}`
console.log(jsonStr)
// 输出结果:
// {"name":"张三","hobby":"打篮球"}

在这个示例中,我们使用 String.raw 将 JSON 字符串的特殊字符全部原样输出了,不需要我们再通过手工填写转义字符来进行处理了。

示例二

在一些场景下,我们需要将类似于二进制等的数据转换成十六进制的字符串。这时候,我们就可以使用 String.raw 来很方便地实现这个功能。

const arr = new Uint8Array([0x01, 0x02, 0x03, 0xF4, 0xE5, 0xD6])
const hexStr = String.raw`${arr}`
console.log(hexStr)
// 输出结果:
// 010203f4e5d6

在这个示例中,我们将一个 Uint8Array 数组转换成了一个十六进制的字符串,String.raw 方法自动地帮我们去掉了每个字节之间的空格,并且将十六进制的每个字符都打印出来。

总之,String.raw 方法虽然看起来并不太起眼,但是在一些特定的场景下却可以起到很大的作用。

本文链接:http://task.lmcjl.com/news/10126.html

展开阅读全文