>[success] # 带标签的模板字符串 ~~~ 1.es6 引入了 模板字符串的写法'``',同时也引入了'带标签的模板字符串' ~~~ >[danger] ##### 了解 ~~~ 1.下面的打印结果发现变成了一个数组 ~~~ ~~~ const str = console.log`hello world` // 打印结果 [ 'hello world' ] ~~~ ~~~ 1.可以看出数组中的项是'插入表达式'作为分割生成的,并且插入表单式中的内容参数,也会依次打印出来 ~~~ ~~~ const name = 'tom' const gender = false const result = console.log`hey, ${name} is a ${gender}.` // 打印结果: [ 'hey, ', ' is a ', '.' ] 'tom' false ~~~ >[danger] ##### 可以做什么 ~~~ 1.下面是一个常见案例,有时候存储的变量不是实际需要显示的值往往需要做一下转换 ~~~ ~~~ const name = 'tom' const gender = false const result = console.log(`hey, ${name} is a ${gender?'男':'女'}.`) // 打印结果: hey, tom is a 女. ~~~ * 如果带标签的模板字符串配合定义的function,第一个元素是数组,是被模块字符串拆分的字符串组合,后面的元素是一个个模块字符串传入的内容 ~~~ const name = 'tom' const gender = false function myTagFunc(strings, name, gender) { // console.log(strings, name, gender) // return '123' const sex = gender ? 'man' : 'woman' return strings[0] + name + strings[1] + sex + strings[2] } // result 的返回值是根据函数中定义的返回,如果上面定义的 1 result 打印的变是1 const result = myTagFunc`hey, ${name} is a ${gender}.` // 打印结果: hey, tom is a woman. console.log(result) ~~~ [mdn中的案例](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings)