es6 模板字符串

es6 新的特殊支持嵌入表达式,自动会处于``内所有的字符串。

多行字符串

\\传统的多行字符串
console.log('string line1 \n\
string line2')
\\es6多行字符串
console.log(`string line
string lin2`);

表达式插入

传统的方式采用的是字符串拼接的方式进行,通过+号进行拼接

// 传统方式
 let x=1;
 let y=2;
 console.log('x='+(a+b)+';y='+(a*b))
 //es6 语法
 console.log('x='+(a+b)+';y='+(a*b));
 console.log(`x=${x+y},y=${x*y}`);

带标签的模板字符串

//strings 存放所有的字符串字面的数组
//values 存放第一个数组紧随的参数
 function tag3(strings,...values){
 					  let a = 5;
					  let b = 10;
                console.log(strings[0]);//hello
                console.log(strings[1]);//world
                console.log(strings[2]);//
                console.log(values[0]);//15
                console.log(values[1]);//50
                return "hello world"
 }
  tag3 `Hello ${a+b} world ${ a*b }`;
  //out:hello world

通过传入的参数来返回一个函数

function template(strings,...keys){
return (function(...values){
		var dict=values[values.length-1]||{};  //A                 
		var result=[strings[0]];
		keys.forEach(function(key,i){
		var value=Number.isInteger(key)?values[key]:dict[key];              result.push(value,strings[i+1]);
});
return result.join(' ');
});
}
var t1Closure=template `${0}${1}${0}!`;//返回的是一个函数
console.log(t1Closure('Y','A'));//Y A Y

不转义字符串

在String.raw()输出不转义的字符串,输出原始的字符串

function tag(strings, ...values) {
/*
	倘若不采用raw输出的会直接进行换行 
*/
  console.log(strings.raw[0]); 
  // "string text line 1 \n string text line 2"
}

tag`string text line 1 \n string text line 2`;
实例
//判断是否具有权限,倘若没有抛出一个异常
//${user.name}和${action}是两个点占位号,会自动将值带入到该字符串
function authorize(user, action) {
  if (!user.hasPrivilege(action)) {
    throw new Error(
      `用户 ${user.name} 未被授权执行 ${action} 操作。`);
  }
}

转载于:https://my.oschina.net/u/215677/blog/779060

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值