ES6/ES7/ES8/ES9/ES10新特性汇总

255 阅读2分钟

ES6(2015年发布)

1.Class

2.模块化 :导入 export 、导出 import

3.箭头函数 :this指向定义时所在的对象,而不是使用时所值的对象

4.函数参数默认值:function app (age=25){…}

5.模版字符串

6.解构赋值:let [a,b]=[2,3] //a:2. b:3

7.延展运算符:...

8.对象属性简写 :{name :name}====>{name}

9.promise对象

10.let,const

ES7(2016年发布)

1.新增数组的`includes`属性:
Includes 方法用来检测[数组中是否包含某个元素,返回布尔类型值

       // includes   indexOf
     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 对象:用来表示一个通用的,固定长度的原始二进制数据缓冲区

/*
 * @param {*} length 所创建的数组缓冲区的大小,以字节(byte)为单位。
 * @returns {SharedArrayBuffer} 一个大小指定的新 SharedArrayBuffer 对象。其内容被初始化为 0。
 */
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);       // [1, 2, 3, 4]

flatMap():将map和flat两者结合起来
[1, 2, 3, 4].flatMap(a = [a**2]);     // [1, 4, 9, 16]

2.修改了try catch 的使用,$catch不必再由入参$

3.增加字符串的trimStart, trimEnd方法,分别是去掉首尾空格

4.增加Object.fromEntries方法,可以把对应数组转成对象

5.增加Function.prototype.toString()方便看到函数对应的内部代码

6.增加Symbol.prototype.description方法

Symbol(‘test’). description === ‘test’ // true

7.对JSON对象的优化 JSON.superset、JSON.stringify