JavaScript模板字符串是ES6引入的用反引号包裹的新语法,支持变量插值(${})、多行书写、免转义单双引号,并可配合标签函数实现转义、国际化等高级处理。

JavaScript 的模板字符串(Template Literals)是 ES6 引入的一种新语法,用反引号 ` 包裹,支持嵌入表达式、多行书写和字符串插值。它让字符串操作更直观、灵活,大幅减少拼接和转义的麻烦。
支持变量插值,告别加号拼接
传统字符串拼接容易出错,尤其混用变量和文本时:
// 旧写法const name = '小明'; const age = 25;const msg = '你好,' + name + ',你今年' + age + '岁了。';
模板字符串直接在 ${} 中写表达式,可读性高、不易漏空格或引号:
// 新写法const msg = `你好,${name},你今年${age}岁了。`;
- 变量、函数调用、运算表达式都可放在
${}里,比如${age > 18 ? '成年人' : '未成年人'} - 不需要转义单/双引号,内部可自由使用
"或'
天然支持多行字符串
以前换行得靠 + 拼接或 \n,既难看又易错:
立即学习“Java免费学习笔记(深入)”;
// 旧写法const html = '';
模板字符串保留原始换行和缩进,HTML 或 SQL 片段写起来非常自然:
// 新写法 标题 内容const html = `
- 换行符会真实出现在字符串中,适合生成结构化文本
- 若不想要多余缩进,可用
.trim()或工具函数清理空白
可与标签函数配合,实现高级处理
模板字符串前面加一个函数名(如 html`...`),就变成“带标签的模板字符串”。该函数接收字符串片段和插值结果作为参数,能做转义、国际化、SQL 防注入等:
// 简单 HTML 转义示例function escape(strings, ...values) { return strings.reduce((acc, str, i) => { const val = values[i] ? String(values[i]).replace(/[&"']/g, c => ({'&':'&','':'>','"':'"',"'":'''}[c])) : ''; return acc + str + val; }, '');}const user = '';const safe = escape`
- 第一个参数是字符串数组(按插值位置分割)
- 后续参数对应每个
${}的计算结果 - 常见标签函数有
String.raw、styled-components、sql等库提供的安全包装器
基本上就这些。模板字符串不是黑科技,但把日常字符串操作从“凑合能用”变成了“顺手好写”,尤其对动态内容和结构化文本帮助明显。











