什么是javascript模板字符串_它比普通字符串好在哪里?

JavaScript模板字符串用反引号定义,支持变量插值、多行书写、任意表达式嵌入及标签函数,比传统字符串拼接更安全、易读、灵活。

JavaScript模板字符串是用反引号(`)包裹的字符串,支持嵌入表达式、多行书写和字符串插值。它不是“更好”的替代品,而是在特定场景下更自然、更安全、更易读的字符串处理方式。

支持变量插值,不用拼接

普通字符串要用加号(+)或 concat() 拼接变量,容易出错且难维护:

❌ 普通写法:
const name = '小明'; const age = 25;
const msg = '你好,' + name + ',你今年' + age + '岁了。';

模板字符串:
const msg = `你好,${name},你今年${age}岁了。`

变量直接写在 ${} 里,语义清晰,不易漏空格或引号。

天然支持多行文本

普通字符串换行必须用 \n 和加号续行,可读性差:

❌ 普通写法:
const html = '\n

标题

\n

内容

\n';

✅ 模板字符串:
const html = `

标题


内容


`;

缩进和换行原样保留,适合写 HTML、SQL 或配置文本。

可嵌入任意表达式,不只是变量

模板字符串中 ${} 内可以是函数调用、运算、三元判断等:

  • `${a + b}`
  • `${items.length > 0 ? '有数据' : '空列表'}`
  • `当前时间:${new Date().toLocaleTimeString()}`

普通字符串做不到这点,必须先计算再拼接,逻辑分散。

支持标签函数,实现高级功能

模板字符串可配合自定义标签函数,做转义、国际化、SQL 防注入等:

function sanitize(strs, ...vals) {
return strs.reduce((acc, s, i) => acc + s + (vals[i] ?? '').replace(/, '
}
const user = '';
const safeHtml = sanitize`${user}`; // 自动转义

这种能力普通字符串完全不具备。