1.可选链操作符

  1. // old
    let ret = obj && obj.first && obj.first.second
    // new
    let ret = obj?.first?.second

2.空位合并操作符

  1. // old
    let c = a ? a : b
    let c = a || b
    // new 如果表达式在??的左侧运算符求值为 undefined 或 null,就返回其右侧默认值。 (0, false 标示有效值)
    let c = a ?? b

3.Promise.allSettled

Promise.all 具有并发执行异步任务的能力。但它的最大问题就是如果参数中的任何一个promise为reject的话,则整个Promise.all 调用会立即终止,并返回一个reject的新的 Promise 对象。
 
Promise.allSettled跟Promise.all类似, 其参数接受一个Promise的数组, 返回一个新的Promise, 唯一的不同在于, 它不会进行短路, 也就是说当Promise全部处理完成后,我们可以拿到每个Promise的状态, 而不管是否处理成功。

4.String.prototype.matchAll

old

  1. function collectGroup1 (regExp, str) {
  2. const matches = []
  3. while (true) {
  4. const match = regExp.exec(str)
  5. if (match === null) break
  6. matches.push(match[1])
  7. }
  8. return matches
  9. }
  10. console.log(collectGroup1(/"([^"]*)"/g, `"foo" and "bar" and "baz"`))
  11. // [ 'foo', 'bar', 'baz' ]

 new 

  1. function collectGroup1 (regExp, str) {
  2. let results = []
  3. for (const match of str.matchAll(regExp)) {
  4. results.push(match[1])
  5. }
  6. return results
  7. }
  8. console.log(collectGroup1(/"([^"]*)"/g, `"foo" and "bar" and "baz"`))
  9. // ["foo", "bar", "baz"]

5.Dynamic import

  1. el.onclick = () => {
  2. import('/modules/my-module.js')
  3. .then(module => {
  4. // Do something with the module.
  5. })
  6. .catch(err => {
  7. // load error;
  8. })
  9. }
  10.  
  11. let module = await import('/modules/my-module.js');

6.BigInt

创建 BigInt 类型的值也非常简单,只需要在数字后面加上 n 即可

  1. const aNumber = 111;
  2. const aBigInt = BigInt(aNumber);
  3. aBigInt === 111n // true
  4. typeof aBigInt === 'bigint' // true
  5. typeof 111 // "number"
  6. typeof 111n // "bigint"
  7.  
  8. 在大多数操作中,不能将 BigIntNumber混合使用。比较Number BigInt是可以的,但是不能把它们相加。
  9.  
  10. 1n < 2
  11. // true
  12.  
  13. 1n + 2
  14. // Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions

7.globalThis

  1. // ES10之前的解决方案
  2. const getGlobal = function(){
  3. if(typeof self !== 'undefined') return self
  4. if(typeof window !== 'undefined') return window
  5. if(typeof global !== 'undefined') return global
  6. throw new Error('unable to locate global object')
  7. }
  8.  
  9. // ES10内置
  10. globalThis.Array(0,1,2) // [0,1,2]
  11.  
  12. // 定义一个全局对象v = { value:true } ,ES10用如下方式定义
  13. globalThis.v = { value:true }
  14.  
  15. globalThis 目的就是提供一种标准化方式访问全局对象

  

  

ES2020新特性记录的更多相关文章

  1. ES2020新特性链操作符 '?.'和'??'

    ES2020新特性,js中的可选链操作符?. 概述 回想一下,我们是如何访问可能含有空值(null或undefined)属性的嵌套对象,比如访问web api 返回结果的user详情,可以使用嵌套的三 ...

  2. C#新特性记录

    C#6.0新特性笔记 Getter专属赋值 可以在构造函数中,给只有get的属性赋初始值. class Point { public int x { get; } public Point() { x ...

  3. C# 9.0 新特性之只读属性和记录

    阅读本文大概需要 2 分钟. 大家好,这是 C# 9.0 新特性系列的第 4 篇文章. 熟悉函数式编程的童鞋一定对"只读"这个词不陌生.为了保证代码块自身的"纯洁&quo ...

  4. 【c#】6.0与7.0新特性介绍记录

    c#发展史 引用地址:https://www.cnblogs.com/ShaYeBlog/p/3661424.html 6.0新特性 1.字符串拼接优化 语法格式:$”string {参数}” 解释: ...

  5. SQL Server 2014 新特性——内存数据库

    SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...

  6. 跨平台的 .NET 运行环境 Mono 3.2 新特性

    Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新. Mono 3.2 主要新特性: LLVM 更新到 3.2 版本,带来更多 ...

  7. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  8. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  9. Sql Server 2012新特性 Online添加非空栏位.

    我们都知道,Sql Server在一个数据量巨大的表中添加一个非空栏位是比较费心的,缺乏经验的DBA或是开发人员甚至可能鲁莽地直接添加导致阻塞相应业务,甚至可能因为资源欠缺造成实例的全局问题.当然这都 ...

随机推荐

  1. Charles-模拟弱网环境

    在做弱网测试时,经常需要模拟各种网络环境,Charles恰好也提供了网络限制的功能,我们可以在"Proxy->Throttle Settings"路径下找到它,如下图所示. ...

  2. Appium自动化(11) - 详解 Applications 类里的方法和源码解析

    如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 Applications 类 ...

  3. Identity用户管理入门四(修改、删除用户)

    修改用户不能修改Id及用户名所以创建视图模型时需要去除,新增用户跟修改用户基本视图一直,所以不再做演示 一.新建UpdateUserViewModel视图模型 using System.Compone ...

  4. JDBC基础和使用

    内存泄漏意思就是内存越来越少了,因为垃圾太多: 线程泄露就是线程池中线程越来越少,执行过程中异常,没有返回给线程池,线程池中线程越来越少: 一.概念 二.快速入门 三.JDBC各个类详解 1.driv ...

  5. [第十四篇]——Docker Machine之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker Machine 简介 Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机. Docker Mac ...

  6. vue随记

    (一)使用props传值: <HeadTitle name-data="100"></HeadTitle> props:['nameData'] 父组件传递 ...

  7. pip安装更换国内源

    镜像地址:阿里云 https://mirrors.aliyun.com/pypi/simple/豆瓣http://pypi.douban.com/simple/清华大学 https://pypi.tu ...

  8. HDU - 2544最短路 (dijkstra算法)

    HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...

  9. 【PHP数据结构】图的应用:最小生成树

    在学习了图的基本结构和遍历方式后,我们再继续地深入学习一些图的基本应用.在之前的数据结构中,我们并没接触太多的应用场景,但是图的这两类应用确是面试或考试中经常出现的问题,而且出现的频率还非常高,不得不 ...

  10. Modern PHP interface 接口

    The right way /dev/hell Code Response.php 接口 demo: modern-php/├── data│   └── stream.txt└── interfac ...