【前端】ES9:ES9新特性

文章目录

  • [1 对象的剩余参数](#1 对象的剩余参数)
  • [2 扩展运算符](#2 扩展运算符)
  • [3 正则表达式命名捕获组](#3 正则表达式命名捕获组)
  • [4 Promise.finally()](#4 Promise.finally())

1 对象的剩余参数

js 复制代码
let obj = {
    name:"kerwin",
    age:100,
    location:"dalian"
}

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

2 扩展运算符

js 复制代码
//...
let obj1 = {
	name: "tiechui",
	location: "dalian"
}

let obj2 = {
	name: "xiaoming",
	age: 18
}
        
let obj3 = {...obj1, ...obj2}
console.log(obj3)

function ajax(options){
	const defaultOptions = {
		methods: "get",
		async: true
	}
	options = {...defaultOptions, ...options}
	console.log(options)
}

ajax({
	url: "/api",
	methods: "post"
})

let obj5 = {
	name: "kerwin",
	age: 100
}
let obj6 = {...obj5}
console.log(obj6)

3 正则表达式命名捕获组

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

javascript 复制代码
let str = "今天是2022-11-10"
//let reg = /[0 - 9]{4} - [0 - 9]{2} - [0 - 9]{2}/ // 2022-11-10
let reg = /([0 - 9]{4}) - ([0 - 9]{2}) - ([0 - 9]{2})/g // ()分组,2022-11-10、2022、11、10

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

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

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

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

let res = reg.exec(str)
let {year, month, day} = res.groups
console.log(year, month, day)

4 Promise.finally()

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

js 复制代码
function ajax(){
    return new Promise((resolve,reject)=>{
        reject(1111)
    })
}
//显示loading
ajax().then(res=>{

}).catch(err=>{

}).finally(()=>{
    //隐藏loading
    console.log("finally") // 成功/失败都执行
})
相关推荐
-Da-5 分钟前
【操作系统学习日记】并发编程中的竞态条件与同步机制:互斥锁与信号量
java·服务器·javascript·数据库·系统架构
Irene19918 分钟前
JavaScript脚本加载的两种方式:defer/async 的区别
前端·javascript·php
天若有情67312 分钟前
开篇必看:零基础吃透前端,别再盲目死记硬背了
前端
RulerMike18 分钟前
three 实现简单机械臂逆运动
前端·ai编程·three.js
darkb1rd20 分钟前
从“会聊天”到“会搭页面”:一次 TinyEngine + MCP 的前端智能化实战思路
前端
社恐的下水道蟑螂37 分钟前
从奶茶店彻底搞懂 SSR!从零到拿捏服务端渲染,看完面试吹牛逼不卡壳
前端·react.js·性能优化
EnCi Zheng42 分钟前
M1-如何转换为HTML
前端·html
进击的尘埃1 小时前
用了大半年 Claude Code,我总结了 12 个真正改变工作流的配置技巧
javascript
luanma1509801 小时前
Laravel 8.X重磅特性全解析
前端·javascript·vue.js·php·lua
kyriewen1 小时前
为什么我的代码在测试环境跑得好好的,一到用户电脑就崩?原来凶手躲在地址栏旁边
前端·javascript·chrome