1.normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化,这样就可以很容易求汉字和字符混杂的字数,而不用因为汉字和英文字符占位不同导致结果不一致。
NFC,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
NFD,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。
NFKC,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。)
NFKD,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。
'\u01D1'.normalize() === '\u004F\u030C'.normalize()
// true
console.log('级'.normalize('NFC').length)
//1
2.includes(), startsWith(), endsWith()
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
console.log('级'.normalize('NFC').length)
let a ='linjian';
console.log(a.includes('lin'))
//true
console.log(a.startsWith('lin'))
//true
console.log(a.endsWith('jian'));
//true
3.padStart(),padEnd()
引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全
4.支持模板写法不用繁琐的+
let a = 1,b='c';
console.log(`
this is a template example,
this values is ${a},and ,${b}
`)
//"
this is a template example,
this values is 1,and ,c
"
模板运算:
let a = 1,b='c',c=2;
console.log(`
this is a template example,
this values is ${a} + ${c}=${a+c}
`)
方法调用:
let a = 1,b='c',c=2;
console.log(`
this is a template example,
this values is ${a} + ${c}=${temp(a,c)}
`)
function temp(a=1,c=1){
return a + c ;
}
标签模板
标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。
let a = 5;
let b = 10;
tag`Hello ${ a + b } world ${ a * b }`;
// 等同于
tag(['Hello ', ' world ', ''], 15, 50);
tag函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。
tag函数的其他参数,都是模板字符串各个变量被替换后的值。由于本例中,模板字符串含有两个变量,因此tag会接受到value1和value2两个参数。