ES7新特性
检查数组中是否包含某个元素 includes 2**10 2的10次方
let array = ['红楼梦','西游记','三国演义','水浒传']
console.log(array.includes('红楼梦')) // true
console.log(array.indexOf('红楼梦')) // 0
console.log(2**10) // 1024 2的10次方
ES9 正则拓展
(1)正则分组
如下图所示,可以看到明显的正则分组,并且可以将匹配到的值重新命名,使用属性的方式去获取,防止了正则变化时,数字位置变化的问题
let str = '<a href="http://www.atguigu.com">尚硅谷</a>'
console.log(str)
const REG = /<a href="(?<url>.*)">(?<text>.*)<\/a>/ // 此处不能加单引号,?<name>是对匹配到的值进行重名名
let result = REG.exec(str)
console.log(result)
console.log(result.groups.url)
(2)反向断言与正向断言
添加条件,可以判断前面的是什么或者后面的是什么,防止匹配到多个
(3)dotAll
特点:.是元字符,除换行符以外的任意单个字符,ES9添加了/s可以匹配任意字符,在正则的最后添加一个/s即可
ES10 -- 对象拓展方法
对象和Map的互换
ES10 -- 字符串的trimStart()与trimEnd()
let str = ` ilove you and you `; console.log(str.trimStart()) //去除开始的空白 console.log(str.trimEnd()) // 去除末尾的空白
ES10 -- flat与flatMap
flat可以把多维数组转换成一维数组,里面的数字是转换的深度
ES11 -- 私有属性
使用#标注私有属性即可,在类内部可以操作私有属性,在类外部是不可以的
ES11 -- String的mathAll 匹配所有
for (let v for result){
//批量提取
}
ES11 -- 可选链操作符?.
config&&config.db&&config.db.host,先判断config是否存在,然后判断config中的db是否存在,然后才获取的host,可以简写为config?.db?.host
ES11 -- 动态import
用的时候再导入,加载速度变快
btn.onclick = function () { import('./m1.js').then(module => { module.hello(); }) }
ES11 -- BigInt类型 大整型,在数字后面加一个n即可
更大数字运算,它支持任意长度的整数,不能和普通数值进行运算,运算的结果都是BigInt
let n = 521n; let m = BigInt(521)