ES111.String.prototype.matchAll返回一个包含所有匹配正则表达式和组捕获结果的迭代器。varregexp=/t(e)(st(\d?))/gvarstr='test1test2'str.match(regexp)//['test1','test2']str.matchAll(regexp)//RegExpStringIterator{}[...str.matchAll(regexp)]//[['test1','e','st1','1',index:0,input:'test1test2',length:4],['test2','e','st2','2',index:5,input:'test1test2',length:4]]2.Dynamicimport()constmodelpath='/model1'import(`@/pages${modelpath}`).then(module=>{}).catch(err=>{})3.import.metaimport.meta将返回访问模块相关元信息的对象,只能在模块内部使用。4.export*asXXfrom'module'andimport*asXXfrom'module'5.Promise.allSettled()Promise.allSettled方法接收一组Promises并返回所有结果,不管是resolved还是rejected6.BigInt表示任何大整数定义一个BigInt:如:10n,或调用函数BigInt()。7.globalThisBrowser:顶层对象是windowNode:顶层对象是globalWebWorker:顶层对象是self以上三者:一般顶层对象是globalThis8。可选链运算符(?.)letobj=null;console.log(obj?.cc);//未定义的console.log(obj.cc);//无法读取null9的属性“cc”。空值合并(??)空值:undefined,当左边的操作数为null或undefined时为null,返回其右操作数,否则返回左操作数。与逻辑或运算符(||)不同,逻辑或运算符在左操作数为假时返回右操作数。例如:未定义??'cc'//输出ccnull??'cc'//输出ccfalse??'cc'//输出falseNaN??'cc'//输出NaN比较:false||"cc"//输出ccNaN||'cc'//outputccES121.String.prototype.replaceAllreplaceAll返回一个全新的字符串,所有符合匹配规则的字符都会被替换,替换规则可以是字符串也可以是正则表达式注意replaceAll在使用正则表达式的时候,如果不是全局匹配(/g),replaceAll()会抛出异常2.Promise.any当Promise列表中的任何一个promiseresolve成功时,它会返回第一个resolve的结果状态,如果可能的话,如果没有迭代对象中的promise成功,失败的promise和AggregateError类型的实例将被返回,它是Error的子类,用于将单个错误聚合在一起。Promise.race一旦promise触发了resolve或者reject,它直接返回status结果,不管成功或者失败。Promise.all失败就是失败,成功也是失败。承诺。任何成功都是成功,失败也是成功。当我们通过(const,let,var)创建一个变量时,WeakRef的内置对象,垃圾收集器GC永远不会从内存中删除该变量,只要它的引用仍然可以访问。WeakRef对象包含对对象的弱引用。对象的弱引用不会阻止垃圾收集器GC恢复对该对象的引用,GC可以随时删除它。WeakRefs在很多情况下都有用,比如用一个Map对象实现一个键值缓存,有很多内存密集型缓存,这种情况下尽快释放键值对占用的内存是最方便的。目前,可以通过WeakMap()或WeakSet()使用Wea??kRefs。4.逻辑运算符和赋值表达式aop=b等价于a=aop(a=b)leta;letb="cc";a||=b;//a=a||b;a&&=b;//a=a&&b;a??=b;//a=a??b;5.数字分隔符由任意数量的下划线(_)分隔
