加强了对Unicode的支持
在ES5中,js支持用\uxxxx来表示一个数字,其中xxxx表示字符的Unicode码点。这种表示方法仅限于码点在\u0000~\uFFFF之间的字符,超出这个码点的字符必须用两个双字节表示,但是ES5只能识别两个字节组成的字符,但ES6中增加了对两个双字节字符的支持
-
方法:将码点包裹在花括号中
a = '\u{12FFF}';
新的循环方法
ES6中提供了一个新的循环方式for of
特点:可以将超过字节数的数字进行循环遍历,这种循环更加可靠
-
格式:for(let word of 变量名)
let a = \u{20ffc}; for(let word of a){ console.log(word); }
字符串新方法
-
include:判断主串中是否含有对应的子串
let str = 'hello world'; console.log(str.include('he')); //true
-
startsWith:判断主串是否以对应的子串开头
- 参数一:查找的子串,如果不填会返回false
- 参数二:字符串开始位置,从零开始
let str = 'hello world'; console.log(str.startsWith('he')); //true console.log(str.startsWith('ll',2)); //true
-
endsWith:判断主串是否以对应的子串结尾
- 参数一:查找的子串,如果不填会返回false
- 参数二:字符串截止在第x个字符前(从零开始)
let str = 'hello world'; console.log(str.endsWith('lo',4)); //false console.log(str.endsWith('lo',5)); //true console.log(str.endsWith('lo',6)); //false
-
repeat:将字符串重复n次,返回新的字符串
let str = 'hello world'; str = str.repeat(3); console.log(str); //hello worldhello worldhello world
-
padStart:用子串在字符串开始处进行补全
- 参数一:补全到多少位
- 参数二:用来补全的子串
let str = 'hello world'; str = str.padStart(15,'abcde'); console.log(str); //abcdhello world
-
padEnd:用子串在字符串结束位置进行补全
- 参数一:补全到多少位
- 参数二:用来补全的子串
let str = 'hello world'; str = str.padEnd(15,'abcde'); console.log(str); //hello worldabcd
模板字符串
如果要加入字符串并导入HTML,以前需要这样做
let obj = {
username:'xiaoming',
age:'18'
gender:'male'
}
let tag = '<div><span>' + obj.username + '</span><span>' + obj.age + '</span><span>' + obj.gender + '</span></div>'
但在ES6中我们使用模板字符串即可
let tpl = `
<div>
<span>${obj.username}</span>
<span>${obj.age}</span>
<span>${obj.gender}</span>
</div>
`
现在我们只需要在字符串中使用`${变量名}`就可以实现字符串的替换了。相比ES5的‘+’号连接,这样的方法更加清晰可读性更强,同时模板字符串能够保留字符串的输入格式,空格及回车都可以保留,现在我们可以更加轻松的在js中写入HTML的代码了
注意
- 大括号中的值不是字符串时,将按照一般的规则转换成字符串,例如大括号中的是一个对象,那么将默认调用对象的toString方法
- 模板字符串中的${....}可以放入任意javaScript的表达式,可以进行运算,引用对象属性,调用函数,也可以嵌套,甚至还可以调用自己本身