ES6(2015年发布)
1.Class
2.模块化 :导入 export 、导出 import
3.箭头函数 :this指向定义时所在的对象,而不是使用时所值的对象
4.函数参数默认值:function app (age=25){…}
5.模版字符串
6.解构赋值:let [a,b]=[2,3]
7.延展运算符:...
8.对象属性简写 :{name :name}====>{name}
9.promise对象
10.let,const
ES7(2016年发布)
1.新增数组的`includes`属性:
Includes 方法用来检测[数组中是否包含某个元素,返回布尔类型值
const mingzhu = ['西游记','红楼梦','三国演义','水浒传'];
console.log(mingzhu.includes('西游记'));
返回true
console.log(mingzhu.includes('从你的全世界路过'));
返回false
2.引入了指数运算符「**」,用来实现幂运算,功能与 Math.pow 结果相同
console.log(2 ** 10);
两者相同,都会返回1024
console.log(Math.pow(2, 10));
ES8(2017年发布)
1.新增async await使得异步改同步成为可能,避免代码书写的来回嵌套
2.新增Object.values():对象转数组
Object.values({a:1,b:2,c:3})===>[1,2,3]
3.新增Object.entries():对象转数组
Object.entries({a:1,b:2,c:3})===>[[a,1],[b,2],[c,3]]
4.新增字符串填充(padStart,padEnd)
1.padStart
'hello'.padStart(10) =>>>' hello'
2.padEnd
'hello'.padEnd(10) =>>> 'hello '
'hello'.padEnd(10,'222') =>>> 'hello22222'
5.允许函数参数列表结尾存在逗号
6.添加Object.getOwnPropertyDescriptors(): 获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象
7.新增SharedArrayBuffer 对象:用来表示一个通用的,固定长度的原始二进制数据缓冲区
new SharedArrayBuffer(10)
8.新增Atomics对象:提供了一组静态方法用来对 SharedArrayBuffer 对象进行原子操作
ES9(2018年发布)
1.允许异步迭代:await可以和for…of循环一起使用,以串行的方式运行异步操作
2.添加Promise.finally()
3.修改了正则表达式的一些属性
const reg = /(year[0-9]{4})-(month[0-9]{2})-(day[0-9]{2})/;
const match = reg.exec(2021-02-23);
ES10(2019年发布)
1.新增数组的flat() 和 flatMap()方法
flat():把数组里的数组打开
[1, 2, [3, 4]].flat(Infinity);
flatMap():将map和flat两者结合起来
[1, 2, 3, 4].flatMap(a = [a**2]);
2.修改了try catch 的使用,$catch不必再由入参$
3.增加字符串的trimStart, trimEnd方法,分别是去掉首尾空格
4.增加Object.fromEntries方法,可以把对应数组转成对象
5.增加Function.prototype.toString()方便看到函数对应的内部代码
6.增加Symbol.prototype.description方法
Symbol(‘test’). description === ‘test’
7.对JSON对象的优化 JSON.superset、JSON.stringify