![](https://cdn.jsdelivr.net/gh/ys558/[email protected]/articles/标签模板(Tagged Template)——ES知识点补漏系列(2)/cover.jpg)
字符串模板相信大家用的挺多了,这里不赘述,今天解锁字符串模板的另一个功能,标签模板(Tagged Template)
可作为传参用
标签模板可用于传参,就行普通函数一样接收参数,请看示例代码:
1 | const custom = (strings, ...placeholder) => { |
直接在控制台执行后,会发现结果如下:
1 | [ 'my name is ', ', my hobby is ', '' ] |
我们发现标签模板实际上是一种特殊函数,接收两个参数
@第一个参数 : 除了${}以外的部分字符串部分
@第二个参数 : ${}里面的部分,可以用解构…接收所有${}的参数,否则则按形参一个个按顺序传入
实际作用
下面,我们就这种特殊函数的实际作用举2个例子
给特定文本添加样式
标签模板被发明出来的最主要目的就是拼接HTML字符串的,下面我举2个例子:
用于一段文字中添加HTML样式:
1
2
3
4
5const a = (arr, ...placeholder) => arr.reduce((prev, cur, i) => prev + `<span class="addColor">${placeholder[i-1]}</span>`+ cur)
console.log(a`my name is ${firstName}, my hobby is ${hobby}`)
// my name is <span class="addColor">呵呵</span>, my hobby is <span class="addColor">点赞</span>用于校验HTML里的字符串,防止用户进行XSS攻击
1 | function filterMsg(data) { |