模版字符串
模版字符串是ES6的新语法之一,使用反引号``包含字符串,具有多行,变量,函数等多种特点。如:
// 字符串中嵌入变量
let name = 'Jack'; let str = `Hello ${name}`; // Hello Jack
// 多行字符串,会保留空格和换行
`In JavaScript this is
not legal.`
// 模版字符串中使用反引号`,需要转义\`
let yo = `Yeah, \`yo\``;
// 因为在${}中可以放入任意的js表达式,所以不止能使用变量,还可以使用函数和运算,当然如果js有错误的话,也会报错
let fn = function(){ return 'Hello'};
let str = `${fn()}, Jack`;
模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能
alert`123` // 等同于 alert(123)
tag
函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。这种用法可以用来过滤组成字符串的变量。
function tag(stringArr, value1, value2){ // ... } // 等同于 function tag(stringArr, ...values){ // ... }