【ES6】字符串的拓展
- 一、为什么ES6要进行字符拓展?
- 二、ASCLL码、Unicode编码、UTF-8编码的异同
- 三、ES6新增的字符串接口
- 1)codePointAt()
- 2)codePointAt()
- 3)includes(),startsWith(),endsWith()
- 4)repeat()
- 5)padStart(),padEnd()
- 6)字符串的遍历器接口
- 7)模板字符串
- 查看更多ES6教学文章:
- 参考文献
引言:ES6加强了对Unicode的支持,并拓展了字符串对象。 |
一、为什么ES6要进行字符拓展?
一般地,在JavaScript
中,字符以UTF-16的格式储存,每个字符固定为2个字节,也就是一个字。一个字的范围是0x0000-0xFFFF
(16进制)。例如字符a
就是一个字符,含有2个字节,它的16进制码为0x0061
。
在JS
中,允许采用\uxxxx
的形式来表示一个字符,其中xxxx
就是该字符的16进制值。
我们知道,一个字的表示范围是0x0000-0xFFFF
,当我们想表示大于0xFFFF
的字符的时候,例如:
var a="\u20bb7"; //0x20bb7>0xffff
console.log(a); // 7
出现以上输出7的情况是因为,JS
中,以"\uxxxx"
为一个字符读取,所以"\u20bb7"
被读取成了"\u20bb"+“7"
这两个字符,因为在JS
中,”\u20bb"
不可打印,所以a
只打印出来了7
,事实上,变量a
已经是拥有2个字符的字符串了。
var b="\uD842\uDFB7"; //"\uD842\uDFB7"的码值与"\u20bb7"等价
console.log(a); // 标签:ES6,repeat,字符,拓展,Str,字符串,codePointAt From: https://blog.51cto.com/u_15942590/6010774