ES6------字符串扩展2

一,新增API

1.includes() :判断字符串是否包含某个字符片段

var str='hello world'
console.log(str.includes('llo'))   //true

2.startsWith() :判断字符串是否以某个字符片段开头

var str='hello world'
console.log(str.startsWith('he'))   //true

3.endsWith() :判断字符串是否以某个字符串结束

var str='hello world'
console.log(str.endsWith('world'))   //true

4.repeat() :重复字符串

var str='hello-'
console.log(str.repeat(3))   //'hello-hello-hello-'

5.var str = String.raw`Hi\n${2+3}!`; 不经过特殊字符的替换
// “Hi\n5!”

二, 模板字符串

1.模板字符串使用反引号 (``) 来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(${expression})的占位符。占位符中的表达式和周围的文本会一起传递给一个默认函数,该函数负责将所有的部分连接起来

var ex1='china'
var ex2='coding'
var a=10
var b=13
var t=`i love ${ex1}, i love ${ex2} too, my age=${a+b}`
console.log(t)//'i love china ,i love coding too,my age=23'

三,带标签的模板字符串

1.一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串。该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以通过该函数来对模板字符串进行操作处理,最后,你的函数可以返回处理好的的字符串(或者它可以返回完全不同的东西 )

var name ='lin'
var age = 23
function tag(strings,ex1,ex2) //标签函数的第一个参数包含一个字符串值的数组【0】。其余的参数与表达式相关。
{
	//对于strings数组会有莫名的空字符的原因,可以理解数组元素是通过${}分割,和split类似,当${}出现在头尾就会产生空字符串。
	let a=strings[0] // 'that'【0】
	let b=strings[1] // 'is'【0】
	let c=ex2 //ex2=age
	if(c>60)
	{
	 	c= 'older'
	}
	else
	{
		c='younger'
	}
	return a+ex1+b+c //返回一个字符串【1】
}
var a=tag`that ${name} is ${age}` //a=that lin is younger

可不返回字符串【1】

function template(strings, ...keys) {
  return (function(...values) {  //返回了一个函数【1】
    var dict = values[values.length - 1] || {};
    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}!`;  //由于标签函数返回了一个函数,所以t1Closure等于一个函数体
t1Closure('Y', 'A');  // "YAY!" //函数调用
}

2.使用场合: xsr攻击,多语言模板

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值