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

yizhihongxing

下面是关于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 方法虽然看起来并不太起眼,但是在一些特定的场景下却可以起到很大的作用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS冷知识之不起眼但有用的String.raw方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • javascript HTML5文件上传FileReader API

    下面是关于JavaScript HTML5文件上传FileReader API的详细攻略: 什么是FileReader API? FileReader API 是 HTML5 中的一款文件读取 API,使得客户端的 web 应用程序能够异步读取文件(即用户计算机中的本地文件,而不是通过网络获取的文件)。可以使用 FileReader 读取文本文件、二进制文件…

    JavaScript 2023年5月27日
    00
  • JavaScript 正则表达式中global模式的特性

    JavaScript 正则表达式中global模式是一种用于匹配字符串的特殊模式,具有以下特性: 全文搜索匹配:global模式可以在整个字符串中搜索,而不仅仅是搜索第一个匹配的位置。当在正则表达式中使用全局标志g时,可以进行全文搜索匹配。 下面是一个示例:假设我们有以下HTML代码: <div class="item">It…

    JavaScript 2023年6月10日
    00
  • es6函数之rest参数用法实例分析

    下面来详细讲解“ES6函数之rest参数用法实例分析”的完整攻略。 什么是Rest参数? Rest参数允许我们在定义函数时,将多个参数表示成一个数组。在ES6之前,我们在定义函数时,通常使用arguments对象来接收传入的参数,并通过arguments[index]来访问不同的参数。 function sum() { let result = 0; for…

    JavaScript 2023年6月10日
    00
  • 详解如何在Javascript中使用Object.freeze()

    当我们在编写Javascript代码时,经常会遇到需要限制某个对象不被修改的情况。这时候,我们可以使用Object.freeze()方法来冻结该对象,使其成为只读对象。本文将详细讲解如何在Javascript中使用Object.freeze()方法,并提供两个实例说明。 1. Object.freeze()方法的使用方法 Object.freeze()方法允…

    JavaScript 2023年5月27日
    00
  • cesium-2-entity

    1、四层结构 viewer –> datasources(DataSourceCollection类型) –> datasource –> entities(EntityCollection类型) –> entity 需要学习的方向是:只需要注意每个层与层之间的关系和entity实例如何创建即可 2、DataSourceCol…

    JavaScript 2023年4月27日
    00
  • javascript使用中为什么10..toString()正常而10.toString()出错呢

    这是一个有趣的问题,事实上,10..toString() 和 10.toString() 演示的两种方法是不同的。 在 JavaScript 中,要调用对象的方法,我们通常使用点符号将对象与方法名称连接,例如 object.method()。然而,数字直接量(例如 10)之后的点符号(”.”) 会被 JavaScript 解释为带有小数的数字,因此解释器会尝…

    JavaScript 2023年5月18日
    00
  • js+css实现文字散开重组动画特效代码分享

    下面给出“js+css实现文字散开重组动画特效”的完整攻略。 原理说明 该特效的实现需要使用到CSS 的 transform 属性来进行文字的位移、旋转等操作。同时,通过JS 中的事件绑定实现触发动画效果。 首先将文字拆分为单个的字体元素 随后,通过JS 代码将单个的字体元素进行位置、旋转等方面的定义 当触发动画效果时,JS 代码随机分配位置和角度等属性,并…

    JavaScript 2023年6月10日
    00
  • javascript判断chrome浏览器的方法

    识别浏览器是Web开发中很常见的需求之一,JavaScript 判断 Chrome 浏览器的方法也是其中一种常见的操作。在下面的攻略中,我会介绍三种方法来判断 Chrome 浏览器是否正在使用。 方法一:navigator.userAgent 属性 每个浏览器都会在用户代理(user-agent)字符串中包含一些与其自己有关的信息。在 JavaScript …

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部