-
BigInt
Javascript中最大的整数是pow(2,53)-1,BigInt不受此限制,数字后面加个个后缀n,就是BigInt
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 };
- 空值合并
??逻辑运算符,前值为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)
// 星辰 星辰 星辰 星辰 星辰 星辰
- 可链选
可选链语法允许你访问嵌套更深的对象属性,而不用担心属性是否存在。如果,存在很好。反之,会返回 undefined
let obj={name:"星辰"};
obj.children?.son //undefined
obj?.name ; //星辰
- 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)
})
- String matchAll
matchAll 是 String 原型链上的一个新增的方法,它可以关联正则表达式。它返回一个迭代器,一个接一个的返回所有匹配的组。
globalThis
如果,你写过那些可以运行在 Node、浏览器或者 web-workers 等跨平台的 JS 代码,你就会花费很多的时间去处理全局对象的问题。这是因为不同平台全局对象也不同,浏览器中是 window,Node 中是 global,web workers 中是 self。如果,还有更多的运行环境,这个对象也会有不同。因此,你自己必要检查运行环境来决定使用正确是全局对象。ES2020 给我们带来了 globalThis 对象,它始终会引用着全局对象,而不用关系代码在哪运行