极简三分钟ES6 - ES9中字符串扩展

在ES9中主要是放宽了对模板字符串文字限制

模板字符串的「紧身衣」

在ES9之前,模板字符串遇到转义序列时会有严格限制

js 复制代码
// ES8及之前会报错 
const path = `C:\new\templates\`;  
// 错误!因为`\n`和`\t`被解释为换行符和制表符 

这就像在严格安检通道

  • 所有``开头的字符必须符合标准转义规则(如\n换行、\t制表符)
  • 非标准格式(如\x\u不完整)直接报错

ES9的「宽松模式」

ES9引入标记模板字面量的宽松解析规则

js 复制代码
// ES9中安全使用 
const path = String.raw`C:\new\templates\`;   
// 成功输出 "C:\new\templates\"

允许非常规转义序列

js 复制代码
console.log(`\x`);      // ES9输出 "\\x"(保留原样)
console.log(`\u{61}`);  // 输出 "a"(正常解析Unicode)

支持嵌套模板字符串

js 复制代码
// 多层模板嵌套(如生成HTML)
const html = `
  <div>
    ${`<span>${userName}</span>`}
  </div>
`;

一些常见的使用场景

Windows路径处理

js 复制代码
// 文件路径安全书写 
const configPath = `C:\Program Files\app\config.json`;   
// 无需写成:C:\\Program Files\\app\\config.json  

正则表达式简化

js 复制代码
// 匹配反斜杠的正则 
const regex = new RegExp(`\d+\\\.\\d+`);  
// 无需写成:\\d+\\\.\\d+

代码生成工具

js 复制代码
// 生成带转义字符的代码 
const code = `console.log("Hello\\nWorld");`;   
// 输出:console.log("Hello\nWorld"); 

与传统方案相比

场景 旧版方案 ES9方案 优势
书写Windows路径 C:\\Program Files C:\Program Files 减少50%反斜杠
包含反斜杠文本 手动转义\ 直接书写`` 避免转义混淆
嵌套模板 字符串拼接 直接嵌套 提升可读性

牢记

解放转义 允许非常规转义序列存在,解放嵌套 支持模板多层嵌套结构,解放创作特殊字符处理更自由

相关推荐
笔尖的记忆3 分钟前
【前端架构和框架】react组件化&数据流
前端·面试
zhangzelin88812 分钟前
TypeScript入门指南:JavaScript的类型化超集
前端·javascript·其他·typescript
lichenyang45320 分钟前
流式聊天界面实现解析:从零到一构建实时对话体验
前端
天蓝色的鱼鱼20 分钟前
Turbopack vs Webpack vs Vite:前端构建工具三分天下,谁将胜出?
前端·webpack
软件技术NINI30 分钟前
html css js网页制作成品——化妆品html+css+js (7页)附源码
javascript·css·html
用户8417948145631 分钟前
vxe-table 实现列头授权自定义插槽模板,自定义输入框
前端
im_AMBER36 分钟前
Web 开发 24
前端·笔记·git·学习
小小前端_我自坚强38 分钟前
前端算法相关详解
前端·算法
小小前端_我自坚强1 小时前
UniApp 微信小程序流水线发布全流程
前端·架构
小小前端_我自坚强1 小时前
vue提高技术 高级语法相关
前端·vue.js·前端框架