ES6模板字符串

1.模板字符串(template string)含义:
ES6新出的一种新型的字符串字面量的语法,是一种能在字符中内嵌表达式的字符串字面量( string literal )。模板字符串在早期的Harmony提案中称之为半字面量(Quasi Litaral),现已更名为模板字符串。
2.用法:
1)模板字符串是增强版的字符串,使用了反引号(`)来代替普通字符串的单引号或者双引号来标示,它主要是解决了字符串繁琐和不方便的问题。
早期的字符串(繁琐,不方便):

         var template = {
	string:"yyq",
		old:'23'
	}
	var str = '<a href="javaScript:;">' 
		 + "A <strong>" + template.string + "</strong> "
		 +"uses back ticks instead of double quotes or single quotes. The template string can contain place holders, which use the <em>${}</em> syntax. </a>"
	$('#box').append(str);



字符串模板:
        //模板字符串
	var str2 = `<a href="javaScript:;">
		   A <strong>${ template.string }
		   uses back ticks instead of double quotes or single quotes. The template string can contain place holders, which use the <em>${template.old}</em> syntax. </a>`;
	$('#box').append(str2);


以上,将变量template.string和template.old放到字符串中,明显的发现,字符串模板更加的简便。
其中更让我们觉得简便的例子(错误消息提示):
       //模板字符串的起作用
	function error(userName , action ){
		if(!user.hasPrivilege(action)){
			throw new Error(
				`用户${userName}违背授权执行${action}操作!`
			);
		}
	}
        error('yyq' , '玩')


这个示例中,${userName}和${action}称为模板占位符。javaScript将userName和action的值插入到最终生成的字符串中。
2)模板占位符中的代码可以是任意的javaScript表达式,所以函数调用,模板字符串嵌套(模板套构),变量等都可以。如果是个对象则会自动调用toString方法,如果大括号内是一个变量,则改变量必须声明,否则报错。
需要注意的地方:
如果你在模板字符串中嵌套另一个模板字符串,必须使用反斜杠进行转意,‘ \` ’等价与' ` '.并且在模板字符串中引用$和{},无论怎么用都必须使用反斜杠进行转义。在模板字符串中,可以多行书写,模板字符串中所有的空格、新行、缩进,都会原样输出在生成的字符串中。
        var str = 'return' + '`Hello,${name}`';
	var fn = new Function( 'name' , str);
	console.log(fn('dlj'));

	var old = 23;
	var string = `Hello,${place}..
		.\`只是为了凑字${old}\``;
	console.log(string);


3. 模板实例:
在模板字符串中放置一个常规模板,该模板使用<%.......%>放置javaScript代码,使用<%= .......... %>放置javaScript表达式(此处使用了baidu Template编译该模板字符串)
         var arry = ['a','s','d','f','g','h','k'];
	
	var template =`
			<ul>
			  <% for(var i=0; i < 7; i++) { %>
			    <li><%= arry[i] %></li>
			  <% } %>
			</ul>
			`;

	$('#box').append(baidu.template(template));


4.标签模板:
标签模板不是一种模板,实质上是指一种函数的特殊调用。
       //标签模板
	alert`123`;
	//等价
	alert(123);


标签指的就是函数,紧跟其后的模板则是其参数
        var a = 10;
	var b = 20;
	var tag = function(){
		console.log(arguments);//[Array[3], 30, 10]
	};
	tag `${a+b}大于${b-a}`
	//等同于
	//tag(arry['','大于',''] , 30 ,10)
	// function tag(stringArr,value1,value2...){}

tag的第一个参数是数组,内容是没有变量替换的部分,后面的参数为替换变量的值。
利用函数进行还原
      //创建一个函数还原输入的模板字符串
	function tagBack(string){
		var result = "";
		var i = 0;
		while(i < string.length){
			result += string[i++];
			if(i < arguments.length){
				result += arguments[i];
			}
		}
		return result;
	}
	console.log(tagBack `得到${a+b}大于${b-a}`);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值