es2020 新特性

  1. BigInt
    Javascript中最大的整数是pow(2,53)-1,BigInt不受此限制,数字后面加个个后缀n,就是BigInt


    image.png

    2.动态引入

Javascript 的动态引入,允许你把 JS 文件作为一个模块动态的引入到你的应用中

// index.js
const a=import ('./add.js')
// import ('./add.js')返回一个promise
async function test(){
    const module=await  import('./add.js')
    console.log(module.add(3,4,5))
}
test();

// add.js
function add(a, b, c) {
  return a + b + c;
}
export { add };


  1. 空值合并

??逻辑运算符,前值为null和undefined的表达式,最后值为后面的值,区别于|| 。||是前者为假值时,表达式的值为后面的值

let flag1=null??'星辰'
 let flag2=undefined??'星辰'
 let flag3=false??'星辰'
 let flag4=''??'星辰'
 let flag5=0??'星辰'
 let flag6=NaN??'星辰'

 console.log(flag1,flag2,flag3,flag4,flag5,flag6)
// 星辰 星辰 false  0 NaN
 let flag01=null||'星辰'
 let flag02=undefined||'星辰'
 let flag03=false||'星辰'
 let flag04=''||'星辰'
 let flag05=0||'星辰'
 let flag06=NaN||'星辰'
 
 console.log(flag01,flag02,flag03,flag04,flag05,flag06)
// 星辰 星辰 星辰 星辰 星辰 星辰
  1. 可链选
    可选链语法允许你访问嵌套更深的对象属性,而不用担心属性是否存在。如果,存在很好。反之,会返回 undefined
let obj={name:"星辰"};
obj.children?.son  //undefined
obj?.name ;  //星辰
  1. Promise.allSettled
    Promise.allSettled 方法接收一组 Promise,并且会返回所有的结果 - 而不管是 resolved 还是 rejected。在之前,这是不可能的,尽管有些类似的实现比如:race 和 all。它只会“运行所有的 promise - 而不关心它们的结果”
function createPormise(text) {
        return new Promise((res, rej) => {
            setTimeout(rej, 1000, text)
        })
    }
    const promiseList = [Promise.resolve('星辰'), Promise.resolve('满眼星辰'), createPormise('呵呵')]
    const rejectList = [createPormise('星辰'), createPormise('满眼星辰'), createPormise('呵呵')]

    Promise.allSettled(promiseList).then(res => {
        console.log(res)
    })

    Promise.allSettled(rejectList).then(res => {
        console.log(res)
    })
image.png
  1. String matchAll
    matchAll 是 String 原型链上的一个新增的方法,它可以关联正则表达式。它返回一个迭代器,一个接一个的返回所有匹配的组。
    globalThis
    如果,你写过那些可以运行在 Node、浏览器或者 web-workers 等跨平台的 JS 代码,你就会花费很多的时间去处理全局对象的问题。这是因为不同平台全局对象也不同,浏览器中是 window,Node 中是 global,web workers 中是 self。如果,还有更多的运行环境,这个对象也会有不同。因此,你自己必要检查运行环境来决定使用正确是全局对象。ES2020 给我们带来了 globalThis 对象,它始终会引用着全局对象,而不用关系代码在哪运行

你可能感兴趣的:(es2020 新特性)