2022年,ES2022马上就要来了,还在看ES6的知识点?面试的时候,面试官总是喜欢问一些问题,你知道ES6的新属性有哪些吗?其实ES6是2015年发布的规范,现在2022年了,来考这个有点落伍了。今天就带大家了解一下这些年ES2015(ES6)到ES2021都增加了哪些特性。1、ES2015(ES6)增加letconst声明变量consta=1;letb=2添加变量解构let[a,b,c]=[1,2,3];加强对Unicode编码的支持'\u007A'==='z'//true添加String属性方法fromCodePoint,raw,codePointAtaddstringTraverserinterfacefor(letcodePointof'foo'){console.log(codePoint)}添加字符串实例方法includes()、startsWith()、endsWith()、repeat()、padStart()、padEnd()、trimStart()、trimEnd()、matchAll()、at()修改了正则的部分参数设置表达式并添加了一些属性(太多,就不一一列举了)修改了函数入参的默认值指定方法增加了数组的解构方法(...操作符)增加了简洁的写法对象的,比如{test},相当于{test:test}增加了SetMap两种数据结构,增加了Proxy构造函数(vue也是基于这个做了升级)增加了Promise对象,解决异步编程增加了class关键字(语法糖),改变了之前原型的写法,增加了模块编程的importexport(以前用过,但是ES6之后,社区标准变成了官方标准)当然还有一些其他的变化,就是比较少用,这里就不提了2.ES2016(ES7)中new数组的includes属性引入了运算符(指数运算符)例23//83.ES2017(ES8)中加入asyncawait使得可以从异步改成同步,避免来回嵌套代码写增加Object.values()Object.entries()增加Stringpadding:String.prototype.padStart,String.prototype.padEndallowsacommaat函数参数列表末尾AddObject.getOwnPropertyDescriptors():获取一个对象所有自身属性的描述符,如果没有自身属性,则返回一个空对象AddSharedArrayBuffer对象:用于表示一个通用的、固定长度的原始二进制数据缓冲区增加了Atomics对象:提供了一组对SharedArrayBuffer对象进行原子操作的静态方法4.ES2018(ES9)允许异步迭代:await可以与Thefor...of循环一起使用以串行方式运行异步操作。添加Promise.finally()修改正则表达式的一些属性(这个比较详细,mdn上看看怎么用就可以了)5.ES2019(ES10)修改了trycatch的使用。catch通过在数组中添加入参的flatMap方法,不需要添加字符串的trimStart和trimEnd方法。分别是去除首尾空格,添加Object.fromEntries方法,可以将对应的数组转为对象添加Function.prototype.toString()方便查看函数对应的内部代码。添加Symbol.prototype.description方法示例Symbol('test').description==='test'//true用于优化JSON对象JSON.superset,JSON.stringify6.ES2020(ES11)增加Bigint用于大数计算Addsoptionalchains简化书写判断增加??运算,如果左边不为null或undefined,则返回??左边内容解决letnum=number||1该计算方式的bug增加了Promise.allSettled方法支持异步加载的import()函数。7.ES2021(ES12)增加了字符串的replaceAll方法。替换之前的所有,需要使用正则表达式添加Promise.any方法添加逻辑赋值运算符??=、&&=、||=添加下划线(_)分隔符:使用_分隔数字字面量方便阅读1_0000===10000//trueandWeakRefs,Intl.ListFormat,Intl.DateTimeFormat(这三个一般用的不多,有兴趣的可以自己查)附上,2015年6月ES6正式发布,又名ES2015,之后每年的6月份都会对部分内容进行修订并发布年份号对应的ES版本,比如ES2016~ES2021ES2021是ECMAScript语言规范的第12版,也称为ES12。为了以后避免混淆,还是按年份来称呼吧!保存并进行转换。
