模板字符串是个好东西,请看我细细道来;
模板字符串[template string]是ES6引进来的,他有点类似我们平时使用的模板引擎【jade,handlebar这些】,但是又不是【功能相对鸡肋些,无法条件循环遍历什么的】,下面我来列举下它的优缺点 优点:
缺点:
注意点:
``
反引号来包含内容${}
来识别储存的内容片段【占位符--支持条件表达式】tag``
--- 触发模板字符串函数定义String.raw``
-- 取得字符串模板内的原始数据【原始数据就是包裹换行符\n这些,,原原本本的输出[就是输出之前进行了一次转义,转转的还是依次会保留的--切记!!!]】//用法1: 多行字符串输出,允许内部调用模板占位符
`我是卖报的
今天又没卖出报纸
坑啊`
/*
"我是卖报的
今天又没卖出报纸
坑啊"
*/
//----------------------------------------------
//用法2:变量插入,有了这个就不用像ES5之前只能用+来拼接字符串了【据第三方测试,字符串拼接的速度比这个ES6模板字符串的快。。。ES6本来就是语法糖!!!】
var a = 2;
var b =3 ;
var c = a * 9 ;
console.log(`得到的结果值是:${a * b + c % a }*2`)
//得到的结果值是:6*2
//---------------------------------------------
//用法3:模板字符串高级运用[值位置调整,值的二次运算]
//需要先定义一个函数【arg1为字符串内容(arr-嵌套数组),arg2为变量[arr]】
//函数名+模板字符串执行,,具体如下
function test(strings,...values){
console.log('strings是:'+strings+'\n');
console.log('value是:'+values);
return values[0]+strings + values[values.length-1]
}
var return_value = test`得到的结果值是:${a * b} \n,我分割,\tfasdfjl ${ c % a } *2`
//return_value的结果是:
/*
strings是:得到的结果值是:,
,我分割, fasdfjl , *2
value是:6,0
*/
String.raw`得到的结果值是:${a * b} \n,我分割,\tfasdfjl ${ c % a } *2`
//值为:
/*
"得到的结果值是:6 \n,我分割,\tfasdfjl 0 *2"
*/复制代码
String.raw
对象是对所有字符转义一次才输出【已经手动转义的不再处理】return
返回的值总体来说,模板字符串的出现了,让我们的字符串拼接写的更加优美了;相当简易实用;但是这货并不是万能的,有部分unicode编码字符会造成编译报错