JavaScript模板字符串是ES6引入的用反引号包裹的新语法,支持变量插值(${})、多行书写、免转义单双引号,并可配合标签函数实现转义、国际化等高级处理。
JavaScript 的模板字符串(Template Literals)是 ES6 引入的一种新语法,用反引号 ` 包裹,支持嵌入表达式、多行书写和字符串插值。它让字符串操作更直观、灵活,大幅减少拼接和转义的麻烦。
传统字符串拼接容易出错,尤其混用变量和文本时:
// 旧写法const name = '小明'; const age = 25;const msg = '你好,' + name + ',你今年' + age + '岁了。';
模板字符串直接在 ${} 中写表达式,可读性高、不易漏空格或引号:
// 新写法const msg = `你好,${name},你今年${age}岁了。`;
${} 里,比如 ${age > 18 ? '成年人' : '未成年人'}
" 或 '
以前换行得靠 + 拼接或 \n,既难看又易错:
// 旧写法 标题 内容const html = '\n
模板字符串保留原始换行和缩进,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`${user}`; // zuojiankuo
haophpcnscriptyoujiankuohaophpcnalert(1)zuojiankuohaophpcn/scriptyoujiankuohaophpcn
${} 的计算结果String.raw、styled-components、sql 等库提供的安全包装器基本上就这些。模板字符串不是黑科技,但把日常字符串操作从“凑合能用”变成了“顺手好写”,尤其对动态内容和结构化文本帮助明显。