说实话javasript 标签函数使用的场景仍是比较少的,以致于某个同窗问到我这个问题时就懵逼了!!
java
标签函数的语法是函数名后面直接带一个模板字符串,并从模板字符串中的插值表达式中获取参数
数组
举个例子:函数
let a = 5; let b = 10; function tag(s, v1, v2) { console.log('begin----------'); console.log(s[0]); console.log(s[1]); console.log(s[2]); console.log(v1); console.log(v2); } tag`hello ${a + b} word ${a*b}` //标签函数1 tag`hello 12 word` //标签函数1
通常而言,咱们调用函数是这样的 tag(
hello ${a + b} word ${a*b}
) 有没有发现区别?没错!!标签函数是后面直接跟模版字符串,而函数调用是有()的,里面是参数。好比tag(“参数1”)
code
进一步理解ip
tag`hello ${a + b} word ${a*b}` //标签函数1 tag`hello 12 word` //标签函数1 tag"hello asdf asdfg"// 错误语句 tag(`hello ${a + b} word ${a*b}`)//常规的函数调用 tag("hello word")//常规的函数调用
第一个、第二个后面跟的是标签字符串,因此为标签函数,第三个后面的字符串是用""号的,并非标签语句,语句错误。可能到这里某些同窗还不是很好理解,由于他不知道什么是模板字符串,下面我介绍模板字符串,看完后可返回在看一下这一块就很好理解了字符串
模板字符串也是字符串。 只是通常的字符串没办法在字符串里面使用变量或者拼接,模板字符串能够
io
普通字符串:console
const str1 ='hello world'; const str2 ="hello world";
模板字符串:function
const str3 =`hello world`;
字符串拼接模板
模板字符串写法能够直接使用 ${value} 嵌入表达式:
let a = 5; let b = 10; let str = `hello ${a} word ${a + b}` console.log(str); hello 5 word 15 //输出结果
这里能够明显看出模板字符串的优点,很方便对字符串进行处理
标签函数的就是函数名后面直接带一个模板字符串
标签函数参数
let a = 5; let b = 10; let str = `hello ${a+b} word ${a*b} word`
第一个参数是被嵌入表达式分隔的文本的数组
在上面标签函数被分割的文本数组为['hello','word', 'word']
第二个参数开始是嵌入表达式的内容
在上面标签函数开始是嵌入表达式的内容为 ${a + b} ${a*b}
下面是输出例子
let a = 5; let b = 10; function tag(...args) { console.log(args); } tag`hello${a + b}word${a*b}`; tag`hello${a + b}`; tag`hello${a + b}aaa`; tag`hello`; tag('我是通常函数'); /**下面是输出结果**/ [ [ 'hello', 'word', '' ], 15, 50 ] [ [ 'hello', '' ], 15 ] [ [ 'hello', 'aaa' ], 15 ] [ [ 'hello' ] ] [ '我是通常函数' ]