在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%反斜杠 |
包含反斜杠文本 | 手动转义\ |
直接书写`` | 避免转义混淆 |
嵌套模板 | 字符串拼接 | 直接嵌套 | 提升可读性 |
牢记
解放转义 允许非常规转义序列存在,解放嵌套 支持模板多层嵌套结构,解放创作特殊字符处理更自由