ES6模板字符串配合标签函数将模板拆为静态段和动态值,由自定义函数处理;标签函数首参为strings数组,后续为values,strings长度恒比values多1。

ES6 模板字符串配合标签函数,本质是把模板拆成“静态段”和“动态值”两部分,交由自定义函数统一处理。关键不在拼接,而在可控解析。
标签函数接收的参数结构
当你写 myTag`Hello ${name}, you are ${age} years old.` 时,myTag 函数实际收到:
-
第一个参数(strings):字符串字面量组成的数组,如
["Hello ", ", you are ", " years old."] -
后续参数(values):所有
${...}中表达式的计算结果,按顺序传入,如name和age的值
注意:即使没有插值,strings 也至少有一个元素;有 n 个插值,strings 就有 n+1 个元素。
手动拼接是最基础的用法
你可以按位置把 strings 和 values 交错组合:
- 从
strings[0]开始 - 依次加上
values[i]和strings[i+1] - 最后返回拼接结果(或任意类型)
例如实现小写转大写:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
let result = strings[0];
for (let i = 0; i result += String(values[i]).toUpperCase() + strings[i + 1];
}
return result;
}
upper`hi ${'bob'}, welcome ${42}`; // "hi BOB, welcome 42"
安全转义 HTML 是典型实战场景
直接拼接用户输入容易导致 XSS,用标签函数可自动处理:
- 遍历
values,对每个值做 HTML 实体转义(如→ <code>) - 保持
strings原样(它们本就是开发者写的可信文本) - 再拼接返回,确保输出安全
这样,html`<div>${userInput}</div>` 就不会执行恶意脚本。
返回非字符串结果也很常见
标签函数不强制返回字符串。比如构建 SQL 查询对象:
- 提取
strings中的 SQL 片段(如"SELECT * FROM users WHERE id = ") - 收集
values作为参数列表 - 返回
{ text: "...", params: [...] }结构,供数据库驱动安全执行
这比拼出完整 SQL 字符串更健壮,也利于防止注入。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










