模板字符串不提升运行时效率,真正价值在于提升开发效率、可读性和安全性;它避免引号嵌套、支持多行、防止XSS(配合textContent等),String.raw解决反斜杠转义问题。

模板字符串本身不提升运行时效率,反而在某些场景下比拼接更慢;它的真正价值是提升开发效率、可读性和安全性。
模板字符串 vs + 拼接:性能差异在哪
模板字符串(`hello ${name}`)底层仍会生成新字符串,和 'hello ' + name 一样触发字符串拷贝。V8 引擎对两者优化程度接近,但简单拼接在低版本引擎中可能略快。
- 多次插值(如
`a${b}c${d}e${f}`)比链式+更易读,但实际执行步骤更多 - 无插值的纯模板字符串(
`hello world`)和字面量字符串性能一致 - 若插值表达式复杂(如函数调用、对象访问),开销主要来自表达式求值,而非模板语法本身
为什么你该用模板字符串——不是因为快,而是因为少错
它天然避免引号嵌套混乱、自动处理换行、支持多行结构,更重要的是:防止常见 XSS 风险(配合合适渲染上下文)。
- 不用再数
"和'是否配对,也不用写\n换行符 -
innerHTML = `是危险的,但${userInput}`textContent或createElement配合模板字符串能清晰分离结构与数据 - 标签函数(如
html`)可做转义,这是${val}`+拼接做不到的
String.raw 解决反斜杠转义问题
正则、路径、SQL 片段等含大量 \ 的字符串,用普通模板会意外转义,String.raw 可禁用转义规则。
立即学习“Java免费学习笔记(深入)”;
console.log(`C:\temp\file.txt`); // C: empile.txt(\t 和 \f 被解释) console.log(String.raw`C:\temp\file.txt`); // C:\temp\file.txt
-
String.raw必须作为标签函数使用,不能写成String.raw(`...`) - 它不影响插值部分,只作用于静态部分的转义解析
- Windows 路径、正则字面量、CSS-in-JS 字符串是典型适用场景
真正影响字符串处理效率的,从来不是用 + 还是 `,而是是否提前构建、是否复用中间结果、是否误用重复拼接(比如在循环里不断 +=)。模板字符串的价值,在于让这些决策更清晰、更难写错。











