ES7、ES8、ES9、ES10、ES11、ES12 新特性汇总合集

在过去几年里,ECMAScript 标准不断更新,引入了许多令人激动的功能和改进。让我们来看看从 ES7 到 ES12 各个版本带来的重要变化:

1. ES7(ECMAScript 2016)

1. Array.prototype.includes 方法

Array.prototype.includes 方法用于判断数组是否包含特定元素,并返回相应的布尔值。

const array = [1, 2, 3, 4, 5];
console.log(array.includes(3)); // 输出:true
console.log(array.includes(6)); // 输出:false

2. 指数运算符 **

指数运算符 ** 可以用于计算幂运算。

console.log(2 ** 3); // 输出:8(2的3次方)

2. ES8(ECMAScript 2017)

1. Object.values 和 Object.entries 方法

Object.values 和 Object.entries 方法分别用于获取对象的值数组和键值对数组。

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.values(obj)); // 输出:[1, 2, 3]
console.log(Object.entries(obj)); // 输出:[['a', 1], ['b', 2], ['c', 3]]

2. 字符串填充方法 padStart 和 padEnd

padStart 和 padEnd 方法用于在字符串的开头或结尾填充指定字符,以达到指定的长度。

const str = '123';
console.log(str.padStart(5, '0')); // 输出:00123
console.log(str.padEnd(5, '0')); // 输出:12300

3. ES9(ECMAScript 2018)

1. Promise.finally 方法

Promise.finally 方法用于指定不管 Promise 对象最后状态如何都会执行的操作。

fetch('https://api.example.com/data').then(response => response.json()).catch(error => console.error(error)).finally(() => console.log('Request completed'));

2. Rest/Spread 属性

Rest/Spread 属性让您可以更方便地操作对象和数组。

const { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 输出:1
console.log(y); // 输出:2
console.log(z); // 输出:{ a: 3, b: 4 }

4. ES10(ECMAScript 2019)

1. Array.prototype.flat() 和 Array.prototype.flatMap()

Array.prototype.flat() 方法用于将多维数组(嵌套数组)"扁平化"为一维数组,而 Array.prototype.flatMap() 方法则在执行 flat 后,再对每个元素执行一个映射函数,最后将结果组合成一个新数组。

const arr = [1, 2, [3, 4]];
const flatArr = arr.flat();
console.log(flatArr); // Output: [1, 2, 3, 4]const newArr = arr.flatMap(x => [x * 2]);
console.log(newArr); // Output: [2, 4, 6, 8]

2. Object.fromEntries()

Object.fromEntries() 方法可以将一个键值对列表转换为一个对象。

const entries = [['a', 1], ['b', 2], ['c', 3]];
const obj = Object.fromEntries(entries);
console.log(obj); // Output: { a: 1, b: 2, c: 3 }

5.ES11(ECMAScript 2020)

1. Optional Chaining (可选链)

可选链操作符 ?. 可以简化访问深层嵌套属性时的代码,避免因为中间属性不存在而抛出错误。

const obj = {foo: {bar: {baz: 42}}
};console.log(obj.foo?.bar?.baz); // Output: 42

2. Nullish 合并运算符

Nullish 合并运算符 ?? 可以用来提供默认值,但只有在值为 null 或 undefined 时才会生效。

const foo = null ?? 'default';
console.log(foo); // Output: 'default'

5.ES12(ECMAScript 2021)

1. Promise.allSettled()

Promise.allSettled() 方法接收一组 Promise 对象,等所有 Promise 都已解决(settled)后返回一个 Promise 对象,该对象包含每个 Promise 的结果。

const promises = [Promise.resolve('Success'),Promise.reject('Error'),
];Promise.allSettled(promises).then(results => results.forEach(result => console.log(result.status, result.value)))// Output: "fulfilled Success" 和 "rejected Error"

以上就是ES7、ES8、ES9、ES10、ES11、ES12 新特性汇总合集啦有用就点个赞吧~

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

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

相关文章

【字符串左旋右旋不会做?快来看看这篇“弹幕滚动”,你就有思路了!】

前言 不知道大家在做题时有没有遇到过“字符串旋转”的题目,很多人可能没有思路,这里我不具体讲解单一的题目,而是展现一个“弹幕滚动”的示例,相信大家看懂后就能做出“字符串旋转”的题了! 技术名词解释 1.什么是“…

关于决策树模型

决策树模型是一种常用的数据挖掘方法,它通过模拟人类决策过程来对数据进行分类或回归分析。决策树由节点和边组成,其中每个内部节点代表一个属性上的测试,每个分支代表测试的一个结果,而每个叶节点(树的末端&#xff0…

Vue3 isProxy,isReactive,isReadonly 三者解析

1、isProxy 作用:判断当前数据是否为代理数据。 注意:它只对通过 reactive,readonly,shallowReactive,shallowReadonly 这四个方法包裹的数据返回true,对于 ref 以及通过 new Proxy 代理的数据返回都是fal…

ChatGPT科研与AI绘图及论文高效写作教程

原文链接:ChatGPT科研与AI绘图及论文高效写作教程 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电…

HPE ProLiant MicroServer Gen8更换坏硬盘(RAID 1+0)

HPE ProLiant MicroServer Gen8今天硬盘告警,坏了一块硬盘(估计还是由于上次突然断电导致的),关机,拆下坏硬盘,更换新硬盘,开机后按了一次F1键,系统继续启动并正常使用,同…

高性能MySQL 第4版

第一章MySQL架构 MySQL提供了多种锁的颗粒度,每种MySQL存储引擎都可以实现自己的锁策略和锁力度。 行级锁是在存储引擎而不是在服务器中实现的。 隔离界别 READ UNCOMMITTED - 脏读 在事务中可以可以查看到其他事务中还没有提交的修改。实际中很少用。 READ C…

Linux网络编程——socket 通信基础

Linux网络编程——socket 通信基础 1. socket 介绍2. 字节序2.1 简介2.2 字节序举例2.3 字节序转换函数 3. socket 地址3.1 通用 socket 地址3.2 专用 socket 地址 4. IP地址转换(字符串ip -> 整数,主机、网络字节序的转换 )5. TCP 通信流…

算法------(13)KMP

例题:(1)AcWing 831. KMP字符串 。。其实写完也不太理解。。随便写点吧 KMP就是求next数组和运用next的数组的过程。相比传统匹配模式一次更新一单位距离的慢速方法,next数组可以让下表字符串一次更新n - next【n】个距离&#x…

Java读取文件

读取文件为String 、访问链接直接跳转html 环境:SpringMVC 、前端jsp InputStreamReader FileInputStream fileInputStream new FileInputStream(formatFile.getHtmlpath());InputStreamReader reader new InputStreamReader(fileInputStream, StandardCharsets…

【EAI 026】RoboGen: 通过自动数据生成管线实现机器人技能学习

Paper Card 论文标题:RoboGen: Towards Unleashing Infinite Data for Automated Robot Learning via Generative Simulation 论文作者:Yufei Wang, Zhou Xian, Feng Chen, Tsun-Hsuan Wang, Yian Wang, Zackory Erickson, David Held, Chuang Gan 作者单…

C++:菱形继承问题

目录 1、什么是菱形继承 2、虚拟继承 3、一些常见问题 1. 什么是菱形继承?菱形继承的问题是什么? 2. 什么是菱形虚拟继承?如何解决数据冗余和二义性的 3. 继承和组合的区别?什么时候用继承?什么时候用组合&#…

Qt 自定义长条进度条(类似播放器进度条)

1.运行界面 2.步骤 其实很简单。 2.1绘制底图圆角矩形 2.2绘制播放进度圆角矩形 参考&#xff1a;painter绘图 3.源码 #pragma once#include <QWidget> #include <QLabel> #include <QHBoxLayout> #include <QMouseEvent> #include <QDebug&g…

Slicer学习笔记(六十五) 3DSlicer的医学图像数据增强扩展模块

1. 医学图像数据增强扩展模块 基于3D Slicer5.1.0 编写了一个测试医学图像的数据增强测试扩展模块。 扩展模块名&#xff1a;DataAugementation 项目地址&#xff1a;DataAugmentation 下载该项目后&#xff0c;可以将该扩展模块添加到3D Slicer的扩展中。 关于如何给3DSlicer…

MySQL数据库基本操作(一)

数据库的基本概念 1. 数据库的英文单词&#xff1a; DataBase 简称 &#xff1a; DB 2. 什么数据库&#xff1f;* 用于存储和管理数据的仓库。 ​ 3. 数据库的特点&#xff1a;1. 持久化存储数据的。其实数据库就是一个文件系统2. 方便存储和管理数据3. 使用了统一的方式操作数…

微信自动回复,基于python

#!/usr/bin/python3 # -*- coding: utf-8 -*-import numpy as np import pandas as pd from uiautomation import WindowControl import csvwx WindowControl(Name微信,searchDepth1 ) # 切换窗口 wx.ListControl() wx.SwitchToThisWindow() # 寻找会话控件绑定 hw wx.…

LaTeX-设置表格大小

文章目录 LaTeX-设置表格大小1.创建表格2.设置表格的宽度2.1控制表格每一列的宽度2.2控制整个表格的宽度 3.设置表格的外观4.LaTeX绘制三线表 LaTeX-设置表格大小 本文介绍了LaTeX如何设置表格的大小、改变表格的外观以及如何绘制三线表。 1.创建表格 在LaTeX中创建表很耗时…

【前端素材】推荐优质后台管理系统网页my-Task平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使用。后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功…

2023年NOC大赛软件创意编程(学而思)赛道图形化小低高组决赛试题

2023NOC 决赛-小低组 每个小朋友从小会有梦寐以求的愿望,或是拥有孙悟空七十二变的能 力,或是像神笔马良一样想要什么画什么,或是成为人见人爱的国宝 大熊猫,或是变身全能机器人……今天,你可以用编程实现自己愿望! 【题目要求】 请以“假如我是_____”为题,自选主…

Sentinel实战(待完善)

目录 服务雪崩 什么是服务雪崩 服务不可用原因 解决方案 技术选型对比 Sentinel 介绍 优点 核心概念 资源 规则 代码实战 API实现 SentinelResource注解实现 Sentinel控制台 启动控制台服务 java应用接入控制台 微服务接入Sentinel 服务雪崩 什么是服务雪崩…

DETR详解

1. 动机 传统的目标检测任务需要大量的人工先验知识&#xff0c;例如预定义的先验anchor&#xff0c;NMS后处理策略等。这些人工先验知识引入了很多人为因素&#xff0c;且较难处理。如果能够端到端到直接生成目标检测结果&#xff0c;将会使问题变得很优雅。 2. 主要贡献 提…