es6中新增模板字符串,也带来了新的函数实现方式。
将模板字符串紧跟在一个函数名后面,那么这个函数将被调用来处理这个模板字符串。
“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。
标签模板的第一个参数是一个数组,里面是 由变量隔开的 没有变量替换 的部分:
`Hello ${N} world ${G}`
//由变量分隔开后===>
//${N}的前后:
'Hello ',' world '
//${G}的前后:
' world ',''
//需要注意的是,前后没有的会补上一个空字符串
''
//所以第一个参数是
['Hello ', ' world ', '']
要注意的是,它会包含替换变量的前后部分,前后不存在时会添加空字符串。
所以下面两个函数是等价的
funcA`Hello ${N} world ${G}` //标签模板
funcA(['Hello ', ' world ', ''], N, G) //普通函数