ES2020

GlobalThis

  1. console.log(window)
  2. console.log(self)
  3. console.log(globalThis)
window Self globalThis
浏览器 support support support
web workers support support
Node support

Promise.allSettled

  1. const p1 = new Promise((resolve, reject) =>
  2. setTimeout(resolve(1), 200))
  3. const p2 = new Promise((resolve, reject) =>
  4. setTimeout(reject("error"), 300))
  5. const p3 = new Promise((resolve, reject) =>
  6. setTimeout(resolve(2), 400))
  7. // 想要多个并发执行
  8. Promise.all([p1, p2, p3]).then().catch()
  9. // 问题?,其中一个为reject,则整个会被终止
  10. Promise.allSettled([p1,p2,p3]).then().catch()
  11. // 三个的结果会依次被打印

Nullish coalescing Operator(空位合并操作符)

  1. const liSi = {
  2. basicInfo: {
  3. age: 10
  4. }
  5. }
  6. console.log(liSi.basicInfo.age)
  7. console.log(liSi.basicInfo.role)
  8. // 我们想要给role一个默认值
  9. console.log(liSi.basicInfo.role || "student")
  10. // 但是,如果role为"",那么输出会出现错误
  11. // 解决这个,空位合并操作符
  12. console.log(liSi.basicInfo.role ?? "student")

Optinal Chaining Operator(可选链操作符)

  1. const liSi = {}
  2. // 会报错,终止代码运行
  3. console.log(liSi.basicInfo.age)
  4. // 通过逻辑与进行处理
  5. console.log(liSi && liSi.basicInfo && liSi.basicInfo.age)
  6. // 缺点,潜质校验过多,代码冗余
  7. // 使用可选链操作符
  8. console.log(liSi?.basicInfo?.age)
  9. // 定义BigInt类型数据
  10. const big = 123n
  11. const a = 25;
  12. const biga = BigInt(a)

BigInt

  1. JavaScript又一个数字类型Number,number类型的数字有最大值和最小值的限制
    1. const max = Number.MAX_SAFE_INTEGER
    2. console.log(max)
    3. console.log(max + 1)
    4. // 已达到了最大值,输出不会变化

ES 2019

行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与JSON匹配

更加友好的 JSON.stringify

新增了Array的 flat()方法和 flatMap()方法

新增了String的 trimStart()方法和 trimEnd()方法

Object.fromEntries()

Symbol.prototype.description

String.prototype.matchAll

Function.prototype.toString()现在返回精确字符,包括空格和注释

简化 try {} catch {},修改 catch 绑定

新的基本数据类型 BigInt

globalThis

import()

Legacy RegEx

私有的实例方法和访问器

  1. class Persion {
  2. // 私有属性
  3. #name = "name"
  4. // 私有方法
  5. #say(){
  6. return "hello"
  7. }
  8. getName(){
  9. return this.#name
  10. }
  11. }
  12. const p = new Persion()
  13. // p.#name
  14. // Private field '#name' must be declared in an enclosing class
  15. p.getName()
  16. // name
  17. p.#say()
  18. // Private field '#say' must be declared in an enclosing class
  19. class A{
  20. static #CONfig = { env:"test" }
  21. showConfig(){
  22. return A.#CONfig
  23. }
  24. }
  25. new A().showConfig()
  26. // {env: "test"}
  27. A.#CONFIG
  28. // Private field '#CONFIG' must be declared in an enclosing class

文章