JavaScript中冷门但有用的String.raw

文章梗概

本文讲解的String.raw,作为JavaScript中的静态方法,用来获取模板字符串的原始字符串形式,需要注意的是与字符串模板搭配时候的事项。

介绍

String.raw() 静态方法是模板字符串的标签函数。它的作用类似于 Python 中的 r 前缀或 C# 中用于字符串字面量的 @
前缀。它用于获取模板字符串的原始字符串形式——即,替换表达式(例如 ${foo})会被替换处理,但转义序列(例如 \n)不会被处理。

String.raw在开发中的场景,主要是对转义字符串进行处理。如下面的例子

例子

首先,运行下面的代码。看下初始的效果。

const str = "c:\workspace\network"
console.log(str);

在这里插入图片描述

很神奇,打印出来的信息中,竟然出现了换行符,但是结合我们的字符串一看,我们发现"\network"几个字符串,而在javascript中,"\n"会被解析为换行符,而这与我们一开始的想法,打印出文件夹的路径是有很大的出入的。

对于上述的情况,我们一般会将"“更改为”\",这样子就获得如下的效果

在这里插入图片描述

而今天,我们就可以使用String.raw来测试下

const str = "c:\workspace\network"
const str1 = "c:\\workspace\\network"
const str2 = String.raw`c:\workspace\network`;
console.log(str);
console.log(str1);
console.log(str2);

在这里插入图片描述

可以看到,String.raw的使用方法与我们常用的字符串模板方法是一样的。而且能正常的显示出来了。但是,如果当我们在String.raw中配合使用已经定义好的字段,会怎么样呢?

遗憾

毕竟在项目中,我们很少会自己定义一个"\workspace\network"这样子的字符串,很多时候都是会从后端或者是数据库中获取到字段,然后显示在前端中,此时我们就需要测试下如果先定义一个变量,再使用String.raw会如何。

const str = "c:\workspace\network"
const str2 = String.raw`${str}`;
console.log(str2);

很遗憾,还是不行,所以当我们获取一个自己定义的变量的字符串的时候,是可以使用String.raw来获取原始字符串形式的,但是在现实开发中,实用性不高!​
在这里插入图片描述

求关注

呜呜呜,各位大佬好,感谢看文章,能关注下俺的公众号嘛?周6快乐~
公众号文章链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263380.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mmdetection里的测速脚本

由于大论文里需要对各个算法进行测速,因此抛开官方文档的使用说明,记录一下我是怎么使用mmdetection里的脚本进行测速的。 mmdetection版本:2.23.0 一、新版本benchmark.py(需要分布式) 打开tools/analysis_tools/b…

在Deepin中安装x11vnc工具并结合内网穿透软件实现远程访问桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具,它的原理是通过X Window系统的协议来实现远程桌面的展…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

Java连接数据库增删改查-MyBatis

准备工作: 1.创建一个springboot项目,并添加四个依赖 分别是,MyBatis的启动依赖和安装依赖,SQL的依赖,测试依赖,如下: 2.然后创建一张至少两条数据的表 (表可以用各种图形化工具创…

[c]零钱兑换

题目比较简单&#xff0c;看答案就能看懂什么意思 #include<stdio.h> int main() {int count 0;int n;scanf("%d", &n);for (int i 0; i < n; i){for (int k 0; k <n/2; k){for (int j 0; j < n/5 ; j){if (i 2 * k 5 * j n){count;}}}}p…

【图片版】计算机组成原理考前复习题【第3章 存储系统-2(Cache)】

目录 前言 考前复习题&#xff08;必记&#xff09; 结尾 前言 在计算机组成原理的学习过程中&#xff0c;我们深入探索了计算机系统概述这一重要领域。计算机系统作为现代科技的核心&#xff0c;是整个计算机科学的基石。我们将学到的知识与理论转化为了能够解决现实问题…

递归的两个特点、典型案例----汉诺塔问题

一、递归的两个特点 1、要自己调用自己 2、递归函数里要有结束条件。 二、汉诺塔问题 有三根柱子&#xff0c;现在在一根柱子上&#xff0c;从下往上&#xff0c;按照大小顺序摞着很多盘子。现在要把这些盘子全部放到另一根柱子上&#xff0c;且盘子依然按照从大到小顺序摞着…

【Cisco Packet Tracer】路由器 NAT实验

NAT的实现方式有三种&#xff0c;即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。 静态转换是指内部本地地址一对一转换成内部全局地址&#xff0c;相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器。 [3] 动态转换是指…

Go Changes--Russ Cox在GopherCon 2023的演讲

本内容是Go项目负责人Russ Cox 2023年10月在 GopherCon 上发表的演讲[1] (后面重新录制)的摘要与记录. 主要内容是讲述为什么 Go 必须随着时间的推移而改变,以及为何加入遥测是重要且合适的 本次演讲不是关于Go某些特定的更改&#xff0c;而是修改的整体过程&#xff0c;特别是…

Git—文件添加查看删除修改

目录 1.添加文件—场景一 2.查看.git文件 3.添加文件—场景三 4.修改文件 5.版本回退 6.撤销修改 7.删除文件 1.添加文件—场景一 在包含.git的目录下新建⼀个ReadMe文件&#xff0c;我们可以使用 git add 命令可以将文件添加到暂存 区&#xff1a; ●添加一个或多个文…

从零开始训练一个ChatGPT大模型(低资源,1B3)

macrogpt-prertrain 大模型全量预训练(1b3), 多卡deepspeed/单卡adafactor 源码地址&#xff1a;https://github.com/yongzhuo/MacroGPT-Pretrain.git 踩坑 1. 数据类型fp16不太行, 很容易就Nan了, 最好是fp32, tf32, 2. 单卡如果显存不够, 可以用优化器adafactor, 3. 如果…

文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题

九、用go语言&#xff0c;设 T 是一棵二叉搜索树&#xff0c;其关键字互不相同;设 x 是一个叶结点&#xff0c;y 为其父结点。证明&#xff1a; y.key 或者是 T 树中大于 x.key 的最小关键字&#xff0c;或者是 T 树中小于 x.key 的最大关键字。 文心一言&#xff1a; 要证明…