ES9,ES10

news2024/12/26 23:48:02

文章目录

  • ES9新特性
    • 对象的剩余参数与扩展运算符
    • 正则表达式命名捕获组
    • Promise.finally()
    • 异步遍历器
  • ES10新特性
    • Object.fromEntries
    • trimStart() and trimEnd()
    • Symbol 对象的 description 属性
    • 可选的 catch

ES9新特性

对象的剩余参数与扩展运算符

对象的剩余参数

let obj = {
    name:"xxx",
    age:100,
    location:"dalian"
}

let {name,...other} = obj
console.log(name) //kerwin
console.log(other) //{age: 100, location: 'dalian'}

对象的扩展运算符

let obj1 = {
    name:"kerwin"
}

let obj2 = {
    age:100
}

console.log({...obj1,...obj2})

正则表达式命名捕获组

JS正则表达式可以返回一个匹配的对象, 一个包含匹配字符串的类数组, 比如: 以 YYYY-MM-DD的格式解析日期,

这样的代码可读性很差, 并且在改变正则表达式的结构的时候很有可能就会改变匹配对象的索引

ES9允许使用命名捕获 ? , 在打开捕获括号后立即命名

 let str = "今天是2022-10-10"
 let reg = /([0-9]{4})-([0-9]{2})-([0-9]{2})/g

 let res1 = reg.exec(str)
 console.log(res1)

在这里插入图片描述

let str = "今天是2022-10-10"
let reg = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g

let res1 = reg.exec(str)
console.log(res1)

在这里插入图片描述

Promise.finally()

无论是成功还是失败, 都运行同样的代码, 比如隐藏对话框, 关闭数据连接

function ajax(){
    return new Promise((resolve,reject)=>{
        reject(1111)
    })
}
//showloading
ajax().then(res=>{

}).catch(err=>{

}).finally(()=>{
    //hideloading
    console.log("finally")
})

异步遍历器

同步遍历器的问题

function* fn() {
    yield  1111
    yield  2222

}
const syncI = fn();
console.log(syncI.next())
console.log(syncI.next())
console.log(syncI.next())

在这里插入图片描述

function* fn() {
    yield  new Promise(resolve=>resolve("1111"))
    yield  new Promise(resolve=>resolve("2222"))

}
const syncI = fn();
syncI.next().value.then(res=>{console.log(res)})
syncI.next().value.then(res=>{console.log(res)})

在这里插入图片描述
value属性的返回值是一个 Promise 对象,用来放置异步操作。但是这样写很麻烦,不太符合直觉,语义也比较绕。

异步遍历器生成函数

Generator 函数返回一个同步遍历器,异步 Generator 函数的作用,是返回一个异步遍历器对象。在语法上,异步 Generator 函数就是async函数与 Generator 函数的结合。

async function* fn() {
    yield  new Promise(resolve=>resolve("1111"))
    yield  new Promise(resolve=>resolve("2222"))

}
const asyncI = fn();

asyncI.next().then(res=>{
    console.log(res)
    return asyncI.next()
}).then(res=>{
    console.log(res)
    return asyncI.next()
})
    .then(res=>{
    console.log(res)
})

在这里插入图片描述

for await of
for...of循环用于遍历同步的 Iterator 接口。新引入的for await...of循环,则是用于遍历异步的 Iterator 接口。

async function test() {
    for await (let i of asyncI) {
        console.log(i)
    }
}
test()

ES10新特性

Object.fromEntries

Object.fromEntries()方法允许你轻松地将键值对列表转换为对象

const arr = [["name", "kerwin"], ["age", 100]];
console.log(Object.fromEntries(arr))//{name: 'kerwin', age: 100}

const m = new Map()
m.set("name","tiechui")
m.set("age",18)
console.log(Object.fromEntries(m))

用处

let str ="name=xxxx&age=100"

let searchParams = new URLSearchParams(str)
console.log(Object.fromEntries(searchParams))//{name: 'xxxx', age: '100'}

trimStart() and trimEnd()

trimStart()和trimEnd()方法在实现与trimLeft()和trimRight()相同。

let str = "   kerwin    "
console.log("|"+str.trimStart(str)+"|")
console.log("|"+str.trimEnd(str)+"|")
console.log("|"+str.trimLeft(str)+"|")
console.log("|"+str.trimRight(str)+"|")

Symbol 对象的 description 属性

为Symbol对象添加了只读属性 description ,该对象返回包含Symbol描述的字符串。

let s = Symbol("xxx")
console.log(s.description) //xxx

可选的 catch

let pro1 = new Promise(function (resolve, reject) {
    //执行器函数
    setTimeout(() => {
        resolve("成功的结果")
    }, 30000)
})
let pro2 = new Promise(function (resolve, reject) {
    //执行器函数
    setTimeout(() => {
        reject()
    }, 2000)
})
async function test() {
    try {
        await Promise.race([pro1, pro2])
    } catch {
        console.log("不关心错误结果,网络超时")
    }
}
test()

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

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

相关文章

【Android】线程下载资源保证资源到位采用了 OkHttp的三方网络下载 文件缓存策略

背景 使用 SVGA的三方的url播放方式会比较慢&#xff0c;至少延迟3s以上才会出现svga效果&#xff0c;所以改变策略&#xff1a;将线上的svga全部下载到本地进行播放&#xff0c;那么就得将采用网络缓存的方式实现效果。 实现 那么就得实现以下几点&#xff1a; 初次下载缓…

文件内容显示

一.浏览普通文件 .1. 文件内容查看 1.1.1. cat 命令 作用&#xff1a;查看文件内容&#xff0c;适合数据量较少 格式&#xff1a;cat -参数 文件名 参数&#xff1a; -n&#xff1a;显示行号&#xff0c;加上 -b&#xff1a;文件中所有非空行增加行号&#xff0c;编号从1开始…

Leetcode | 304. 二维区域和检索 - 矩阵不可变

304. 二维区域和检索 - 矩阵不可变 文章目录 [304. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/)题目官方题解&#xff1a;二维前缀和 题目 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形…

DA3 网站的第10位用户信息读取

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID …

绘图系统五:数据产生

文章目录 AxisFrame组件源码模式序列化导入数据获取文件信息导入文本导入二进制数据 &#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制 &#x1f4c8;四 定制绘图风格源码地址 Python打造动态绘图系统 AxisFrame组件 AxisFrame是存…

热电偶的工作原理

当有两种不同的导体或半导体A和B组成一个回路&#xff0c;其两端相互连接时&#xff0c;只要两结点处的温度不同&#xff0c;一端温度为T&#xff0c;称为工作端或热端&#xff0c;另一端温度为T0 &#xff0c;称为自由端&#xff08;也称参考端&#xff09;或冷端&#xff0c;…

使用递归思想遍历二叉树

二叉树的遍历主要有两种方式&#xff1a;深度优先遍历和广度优先遍历 这篇主要讲使用深度优先遍历来遍历二叉树 深度优先遍历有以下三种 前、中、后序遍历&#xff0c;这三种遍历方式的主要区别是中间节点的位置所在的顺序 前序遍历&#xff1a;中间节点在叶子节点前面 中序遍历…

EPLAN_001#常用功能(一)

一、栅格设置、背景颜色设置 二、插入设备图标&#xff08;快捷键 Insert&#xff09; 按TAB旋转方向 三、 通过左CTRLENTER输入 四、移动属性文本、复制格式 CTRLB 可以移动设备图形中的相关文本&#xff08;或者右键—文本—移动属性文本&#xff09; 很对多个文本的&#xf…

ElasticSearch进阶:一文全览各种ES查询在Java中的实现

ElasticSearch进阶&#xff1a;一文全览各种ES查询在Java中的实现 ElasticSearch进阶&#xff1a;一文全览各种ES查询在Java中的实现 es基本语句详解 查询语句详解 前言 ElasticSearch第一篇&#xff1a;ElasticSearch基础&#xff1a;从倒排索引说起&#xff0c;快速认知ES …

Setup exvim enviroment

1. 官方网站 exvim官方网站 sudo apt-get install ctags id-utils cscope silversearcher-ag 2. vundle管理plugins 【NOTE】按照官网安装步骤&#xff0c;会安装一些默认plugins。 查看和修改.vimrc.plugins 打开默认未安装的plugins&#xff0c;比如airline. 打开plugi…

2023华为杯研究生数学建模竞赛E题思路分析+代码+论文

如下为C君撰写的2023华为杯研究生数学建模竞赛E题思路分析&#xff0c;代码论文见文末。 E题思路 出血性脑卒中临床智能诊疗建模 一、 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血&#xff0c;占全部脑卒中发病率的10-15%。其病因复杂&#xff0c;通常因脑…

Vue构建SPA项目实现路由

目录 前言 一、Vue CLI简介 1.什么是Vue CLI 2.Vue CLI的特点 二、SPA项目搭建 1.安装Vue CLI 2.使用脚手架vue-cli来构建项目 ​编辑 3.项目结构说明 4.什么是*.vue文件 三、基于SPA完成路由并嵌套路由 1.基于SPA完成路由 1. 1在src下的components 创建自定义组件…

动态代理原理和设计模式详解

一、什么是代理模式代理模式是一种设计模式&#xff0c;提供了对目标对象额外的访问方式&#xff0c;即可以通过代理访问目标对象&#xff0c;这样可以在不修改原目标对象的前提下&#xff0c;提供额外的方式进行访问&#xff0c;扩展目标对象的功能。 通俗的说&#xff0c;例…

html学习综合案例1

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简介</title> </head> <body>…

【从0学习Solidity】9. 常数 constant和immutable

【从0学习Solidity】9. 常数 constant和immutable 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&…

golang入门笔记——pprof性能分析

文章目录 简介runtime/pprof的使用命令行交互网络服务性能分析pprof与性能测试结合压测工具go-wrk 简介 golang性能分析工具pprof的8个指标 1.性能分析的5个方面&#xff1a;CPU、内存、I/O、goroutine&#xff08;协程使用情况和泄漏检查&#xff09;、死锁检测以及数据竟态…

JavaBean文字格斗游戏之进阶版

以上都是关于role类的定义 求赞!

go 内存泄露

事件回顾 9.15号晚18点服务端发版9.16号晚21点监控显示自发版后服务器 TCP_alloc 指标一路飙升至40K(如图) 问题分析 看到 tcp_alloc 指标异常&#xff0c;初步怀疑有tcp连接创建后未关闭&#xff0c;应该是上次发版写了什么代码导致的。回顾此次发版清单&#xff0c;问题应该…

IBM LSF 任务调度系统的主要术语和概念

LSF 术语和概念 了解 IBM LSF 基本术语和概念。 作业状态 IBM Spectrum LSF 作业具有多个状态。 PEND 正在队列中等待调度和分派。 RUN 已分派到主机并正在运行。 DONE 正常完成&#xff0c;退出值为零。 EXIT 已完成&#xff0c;具有非零退出值。 PSUSP 作业处于暂…

FBX文件结构解读【文本格式】

FBX 格式几乎受到所有 3D 引擎的支持&#xff0c;是 Autodesk 开发的 3D 模型的专有格式。它支持顶点、索引、法线、UV坐标、材质和动画。 FBX还支持许多其他类型的信息&#xff0c;但它们对游戏引擎几乎没有用处。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 有两种…