ES小版本整理

news/2024/3/29 22:18:25/文章来源:https://blog.csdn.net/qq_31290307/article/details/126861122

ECMAScript 2016

  • Array.proptotype.includes
  • 指数运算符
2**10; // 1024
Math.pow(2, 10) //1024

ECMAScript2017

  • Object.values
  • Object.entries
  • Object.getOwnPropertyDescriptors
  • String.proptotype.padStart String.proptotype.padEnd
  • async
const obj = { a:1, b:2 };
console.log(Object.values(obj)); // [1,2]
console.log(object.entries(obj)); // [[a, 1], [b, 2]]
const string1 = 'a';
const string2 = 'b';
console.log(string1.padStart(5, '0')); // '0000a'
console.log(string2.padEnd(5, '0')); // 'b0000'

ECMAScript2018

  • await
  • Promise.finally
  • Rest 属性
  • RegExp特性 :
    Unicode 属性转义 (\p{…})
    后行断言(Lookbehind Assertions) (?<= ) 和 (?<! )
    命名捕获组(Named Capture Groups)
    s (dotAll) 标志
    推荐参考:ES9的新特性:正则表达式RegExp
//Rest
const {a, b, ...c} = { a:1, b:2, x:3, y:4 };
console.log(a,b,c); // 1,2{x:3,y4}

ECMAScript2019

  • Array.prototype.flat – flat(depth = 1) : any[]
  • Array.prototype.flatMap
  • Object.fromEntries
  • String.prototype.trimStart
  • String.prototype.trimEnd
  • Symbol.prototype.description
  • 可忽略的catch参数
  • Array的稳定排序
  • JSON.stringify
  • JSON被归为ECMAScript子集
  • Function的toString
const array1 = [1,2,[3,4],[[5,6]]];
console.log(array1.flat(0));  // '[1,2,[3,4],[[5,6]]]'
const array2 = [1,2,[3,4],[[5,6]]];
console.log(array2.flat()); // '[1,2,3,4,[5,6]]'
const array3 = [1,2,[3,4],[[5,6]]];
console.log(array3.flat(2)); // '[1,2,3,4,5,6]'const array4 = [1,2,3];
console.log(array4.flatMap(x=> x)) // '[1,2,3]'
console.log(array4.flatMap(x=> [x])) // '[1,2,3]'
console.log(array4.flatMap(x=> [[x]])) // '[[1],[2],[3]]'
const array5 = [1,2,3];
console.log(array5.flatMap((x,i) => new Array(i+1).fill(x))); // [1,2,2,3,3,3]const obj = Object.fromEntries([[a,1],[b,2]]);
console.log(obj); // {a:1,b:2}const sym = new Symbol('hahaha');
console.log(sym.description); // 'hahaha'try{
}catch{
}

ECMAScript2020

  • Optional Chaining 可选链式调用
  • Nullish Coalescing 空值合并
  • Private Fields 私有字段
  • Static Fields 静态字段
  • Top Level Await 顶级 Await
  • Promise.allSettled 方法
  • Dynamic Import 动态引入
  • MatchAll 匹配所有项
  • globalThis 全局对象
  • BigInt
const obj = { person: {name: 'f'} };
console.log(obj.teacher?.name); // undefinedconst number = 0;
const num = number ?? 1;
console.log(num); // 0  仅合并 null&undefined//等待多个 promise 返回结果时,我们可以用 Promise.all([promise_1, promise_2])。但问题是,如果其中一个请求失败了,就会抛出错
//误。然而,有时候我们希望某个请求失败后,其他请求的结果能够正常返回。针对这种情况 ES11 引入了 Promise.allSettled 
promise_1 = Promise.resolve('hello')
promise_2 = new Promise((resolve, reject) => setTimeout(reject, 200, 'problem'))
Promise.allSettled([promise_1, promise_2]).then(([promise_1_result, promise_2_result]) => {console.log(promise_1_result) // 输出:{status: 'fulfilled', value: 'hello'}console.log(promise_2_result) // 输出:{status: 'rejected', reason: 'problem'}
})//JavaScript 可以在不同环境中运行,比如浏览器或者 Node.js。浏览器中可用的全局对象是变量 window,但在 Node.js 中是一个叫做 
//global 的对象。为了在不同环境中都使用统一的全局对象,引入了 globalThis 。
// 浏览器
window == globalThis // true// node.js
global == globalThis // true
复制代码

ECMAScript2021

  • String.prototype.replaceAll
  • Promise.any
  • 新增逻辑操作赋值符 ||= &&= ??=
  • WeakRefs
  • 下划线 (_) 分隔符
  • Intl.ListFormat
  • Intl.DateTimeFormat API 中的 dateStyle 和 timeStyle 的配置项

Promise.any() :返回第一个 fullfilled 的 promise ,若全部 reject,则返回一个带有失败原因的 AggregateError。
WeakRefs:使用弱引用对象,该弱引用不会阻止 GC,并且可以在 GC 前使用 WeakRef.prototype.deref ( ) 解除该引用。

a ||= b; // 等同于 a = a || b
c &&= d; // 等同于 c = c && d
e ??= f; // 等同于 e = e ?? f
const x = 2_3333_3333  // 233333333

ECMAScript2022

  • Object.hasOwn
  • Array.prototype.at String.prototype.at
  • error.cause
  • 正则表达式匹配索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_9332.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计划评审技术

计划评审技术就是把工程项目当成一种系统&#xff0c;用网络图或者表格或者矩阵来表示各项具体工作的先后顺序和相互关系&#xff0c;以时间为中心&#xff0c;找出从开工到完工所需要时间的最长路线&#xff0c;并围绕关键路线对对系统进行统筹规划&#xff0c;合理安排以及对…

python--数据容器--列表

目录 1.python中的数据容器&#xff1a; 2.列表的定义 列表的下标索引 列表的查询功能 &#xff08;方法&#xff09; 修改列表的值 在指定位置插入元素 追加元素 追加一批元素 删除元素 删除某个元素在列表中的第一个匹配项 清空列表 统计某元素在列表内的数量 统…

ChIP-Seq,MeRIP-seq峰(peak),eccDNA等染色体分布可视化

人类基因组由1-22、X、Y等染色体构成&#xff0c;染色体经过细胞学处理后会呈现出深浅不同的染色带。 染色带的数目、部位、宽窄和着色深浅均相对稳定性&#xff0c;所以每一条染色体都有固定的分带模式&#xff0c;即称带型。 染色体带型是鉴别染色体的重要依据。图1. 人类染色…

【Android进阶】8、单 Activity-多 Fragment 模式 与 Fragment 的管理器

文章目录8.1 UI的灵活需求8.2 Fragment8.3 Fragment实战8.4 创建数据类8.5 创建 UI fragment8.5.1 定义 CrimeFragment 布局8.5.2 创建 CrimeFragment 类8.5.2.1 实现 Fragment 的生命周期函数8.5.2.2 在 Fragment 中实例化部件8.6 让 Activity 托管 Fragment8.6.1 定义 Activi…

Linux网络编程基础<多进程并发服务器>

一、应用场景 最简单的socket示列代码只能一个客户端连接一个服务器&#xff0c;并不支持多个客户端对服务器的连接&#xff0c;为了能让多个客户端进行连接所以需要多进程或者多线程处理 二、思路解析 服务器端的程序是俩个套接字socket创建一个lfd&#xff0c;accept创建一…

外置编码矩阵神经网络all you need

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

数据结构刷题:第十三天

目录 一&#xff0c;二叉搜索树中的搜索 1&#xff0c;递归 复杂度分析 2&#xff0c;迭代 复杂度分析 二&#xff0c;二叉搜索书中的插入操作 1&#xff0c;模拟 思路与算法 复杂度分析 一&#xff0c;二叉搜索树中的搜索 700. 二叉搜索树中的搜索 - 力扣&#xff08;L…

阿里P8大佬,整理的从零构建企业级容器集群实战笔记,真涨薪神器

前言 微服务架构时代对我们的基础设施管理提出了非常大的挑战&#xff0c;DevOps和持续交付成为了基本能力要求。没有近两年容器技术的快速发展&#xff0c;这些能力可能仍然只属于少数技术实力强大的互联网公司。容器技术的应用从真正意义上催化了我们在基础设施管理上的革命…

最小系统板 STM32入门,呼吸灯实现(STM32F103C6T6)

Hi, I’m Shendi 接着前一篇 https://blog.csdn.net/qq_41806966/article/details/126894938 这一次使用库来进行 LED 灯的开关&#xff0c;及延时的实现 呼吸灯实现 之前使用直接修改地址的方式实现点灯&#xff0c;这次用 GPIO 实现点灯&#xff0c;并加上延迟&#xff0…

傅立叶及其python应用

前言 本文是傅立叶及其python应用系列的第三篇文章对应的仓库地址为https://github.com/yuanzhoulvpi2017/tiny_python/tree/main/Fourier_Series 介绍 第二篇主要介绍了傅立叶的核心&#xff1a;“傅里叶级数就是函数在某个函数空间中各个基底的投影和“&#xff0c;然后基…

Day27、使用DQL命令查询数据

1、DQL语言 1.1、DQL(Data Query Language&#xff0c;数据查询语言) 1&#xff09;查询数据库数据&#xff0c;如SELECT语句 2&#xff09;简单的单表查询或多表的复杂查询和嵌套查询 3&#xff09;数据库语言中最核心、最重要的语句 4&#xff09;使用频率最高的语句 1.2、SE…

Linux小白学习

Linux学习 虚拟机 安装Linux镜像下载简单命令含义 一、虚拟机安装 参考视频&#xff1a;https://www.bilibili.com/video/BV1dS4y1e7rH?share_sourcecopy_web&vd_source0d57c2e2317ebb16893c37677d1b8931 二、Linux镜像下载 网盘下载地址&#xff1a; 链接&#xff1a;h…

如何设计一个可扩展的登录功能

本文主要分享了如何设计一个可扩展的登录功能。 一、多种登录方式&#xff08;需要有一个唯一值来绑定各种登录方式&#xff0c;目前业界用的比较多的是手机号&#xff09; 1.用户名密码登录 最原始的登录方式&#xff0c;这种登录方式与注册功能是分开的&#xff0c;业界慢慢…

网课查题公众号搭建教程(内附接口、源码)

网课查题公众号搭建教程(内附接口、源码) 本平台优点&#xff1a;免费查题接口搭建 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a;题库后台http://daili.j…

Windows11+Ubuntu 3系统如何安全地删掉最后一个Ubuntu系统?

文章目录Windows11Ubuntu 3系统如何安全地删掉最后一个Ubuntu系统&#xff1f;3系统是什么&#xff1f;第一步&#xff1a;删掉Ub16第二步&#xff1a;重启进入grub命令行第三步&#xff1a;从grub命令行中手动启动ubuntu20第四步&#xff1a;进入Windows11更新开机启动项grub配…

LeetCode 0304. 二维区域和检索 - 矩阵不可变

【LetMeFly】304.二维区域和检索 - 矩阵不可变 力扣题目链接&#xff1a;https://leetcode.cn/problems/range-sum-query-2d-immutable/ 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为…

3、Android 活动Activity(4)(为活动补充附加信息)

在意图之外给活动添加额外的信息&#xff0c; 首先可以把字符串参数放到字符串资源文件中&#xff0c;待App运行之时再从资源文件读取字符串值&#xff1b; 接着还能在AndroidManifest.xml中给指定活动配置专门的元数据&#xff0c;App运行时即可获取对应活动的元数据信息&…

C#使用winform做一个开关小游戏

成品展示 游戏原理&#xff1a; 游戏时&#xff0c;任意点击一个格子&#xff0c;其自身状态改变&#xff0c;且上下左右四个格子的状态也进行变化&#xff0c;即&#xff1a;原来是开的变成关的&#xff0c;原来是关的变成开的。 制作过程 1.建项目会的吧。 2.设置游戏窗…

TCP重传,滑动窗口,流量控制,拥塞控制

重传机制 超时重传快速重传SACKD-SACK 超时重传 RTT 就是 数据从网络一端传送到另一端所需要的时间&#xff0c;也就是包的往返时间。 超时重传时间以 RTO 表示&#xff0c;应该略大于RTT。 如果超时重发的数据&#xff0c;再次超时时有需要重传&#xff0c;TCP的策略是超…

[需求管理-2]:什么是需求以及需求的收集与识别

目录 第1章 什么是需求识别 第2章 需求的来源 2.1 外部需求&#xff08;收集&#xff09; 2.2 内部需求&#xff08;开发&#xff09; 第3章 需求的层次 第4章 需求的形式 4.1 提问题&#xff08;针对业务层次需求、原始性需求&#xff09;&#xff1a;第一性原理 4.2 …