前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【ES6+】011-ES9新特性:Rest 参数与 spread 扩展运算符、正则扩展

【ES6+】011-ES9新特性:Rest 参数与 spread 扩展运算符、正则扩展

作者头像
訾博ZiBo
发布于 2025-01-06 09:06:17
发布于 2025-01-06 09:06:17
7000
代码可运行
举报
运行总次数:0
代码可运行

0、功能概述

1、Rest 参数与 spread 扩展运算符

  • 在对象中使Rest参数与spread扩展运算符;

2、正则扩展

  • 简化和增强正则匹配;

一、Rest 参数与 spread 扩展运算符

1、概述

Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符;

2、代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Rest参数与spread扩展运算符</title>
	</head>
	<body>
		<script>
			// Rest参数与spread扩展运算符
			// Rest 参数与 spread 扩展运算符在 ES6 中已经引入,
			// 不过 ES6 中只针对于数组,在 ES9 中为对象提供了像
			// 数组一样的 rest 参数和扩展运算符;
			//rest 参数
			function connect({
				host,
				port,
				...user
			}) {
				console.log(host);
				console.log(port);
				console.log(user);
			}

			connect({
				host: '127.0.0.1',
				port: 3306,
				username: 'root',
				password: 'root',
				type: 'master'
			});

			//对象合并
			const skillOne = {
				q: '天音波'
			}

			const skillTwo = {
				w: '金钟罩'
			}

			const skillThree = {
				e: '天雷破'
			}
			const skillFour = {
				r: '猛龙摆尾',
				// 自己测试,可用
				z: '胡说八道'
			}

			const mangseng = { 
				...skillOne,
				...skillTwo,
				...skillThree,
				...skillFour
			};

			console.log(mangseng)

			// ...skillOne   =>  q: '天音波', w: '金钟罩'
		</script>
	</body>
</html>

3、运行结果

二、正则扩展:命名捕获分组

1、概述

ES9 允许命名捕获组使用符号『?<name>』,这样获取捕获结果可读性更强;

2、代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>正则扩展:命名捕获分组</title>
	</head>
	<body>
		<script>
			// 正则扩展:命名捕获分组
			// 声明一个字符串
			let str = '<a href="http://www.baidu.com">訾博</a>';
			// 需求:提取url和标签内文本
			// 之前的写法
			const reg = /<a href="(.*)">(.*)<\/a>/;
			
			// 执行
			const result = reg.exec(str);
			console.log(result);
			// 结果是一个数组,第一个元素是所匹配的所有字符串
			// 第二个元素是第一个(.*)匹配到的字符串
			// 第三个元素是第二个(.*)匹配到的字符串
			// 我们将此称之为捕获
			console.log(result[1]);
			console.log(result[2]);
			// 命名捕获分组
			const reg1 = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
			const result1 = reg1.exec(str);
			console.log(result1);
			// 这里的结果多了一个groups
			// groups:
			// text:"訾博"
			// url:"http://www.baidu.com"
			console.log(result1.groups.url);
			console.log(result1.groups.text);
		</script>
	</body>
</html>

3、运行结果

三、正则扩展:反向断言

1、概述

ES9 允许命名捕获组使用符号『?<name>』,这样获取捕获结果可读性更强;

2、代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>正则扩展:反向断言</title>
	</head>
	<body>
		<script>
			// 正则扩展:反向断言
			// 字符串
			let str = "JS5201314你知道么555啦啦啦";
			// 需求:我们只想匹配到555
			// 正向断言
			const reg = /\d+(?=啦)/; // 前面是数字后面是啦
			const result = reg.exec(str);
			console.log(result);
			// 反向断言
			const reg1 = /(?<=么)\d+/; // 后面是数字前面是么
			const result1 = reg.exec(str);
			console.log(result1);
		</script>
	</body>
</html>

3、运行结果

四、正则扩展:dotAll 模式

1、概述

正则表达式中点.匹配除回车外的任何单字符,标记『s』改变这种行为,允许行终止符出现;

2、代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>正则扩展:dotAll 模式</title>
	</head>
	<body>
		<script>
			// 正则扩展:dotAll 模式
			// dot就是. 元字符,表示除换行符之外的任意单个字符
			let str = `
			<ul>
				<li>
					<a>肖生克的救赎</a>
					<p>上映日期: 1994-09-10</p>
				</li>
				<li>
					<a>阿甘正传</a>
					<p>上映日期: 1994-07-06</p>
				</li>
			</ul>
			`;
			// 需求:我们想要将其中的电影名称和对应上映时间提取出来,存到对象
			// 之前的写法
			// const reg = /<li>\s+<a>(.*?)<\/a>\s+<p>(.*?)<\/p>/;
			// dotAll 模式
			const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs;
			// const result = reg.exec(str);
			// console.log(result);
			let result;
			let data = [];
			while(result = reg.exec(str)){
				console.log(result);
				data.push({title:result[1],time:result[2]});
			}
			console.log(data);
			
		</script>
	</body>
</html>

3、运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【ES6+】004-ES6新特性:ES6中函数参数的默认值、rest参数、扩展运算符
参考文章:https://www.jianshu.com/p/50bcb376a419
訾博ZiBo
2025/01/06
810
【ES6+】004-ES6新特性:ES6中函数参数的默认值、rest参数、扩展运算符
ES2018新特性学习
ECMAScript 2018 (ES9) 在 6 月底正式发布,带来了很多新特性。关于 ES7 和 ES8 相关的知识,可以查看这篇文章 ES2016 和 ES2017 学习。目前大部分 ES7 和 ES8 的特性都得到主流浏览器的支持,而 ES9 的新特性还未能实现很好的兼容性。
李振
2021/11/26
6820
【ES6+】013-ES11新特性:matchAll、类的私有属性、Promise.allSettled、可选链操作符、动态import导入、BigInt、globalThis对象
訾博ZiBo
2025/01/06
670
【ES6+】013-ES11新特性:matchAll、类的私有属性、Promise.allSettled、可选链操作符、动态import导入、BigInt、globalThis对象
ES7、ES8、ES9、ES10新特性大盘点
从 ECMAScript 2016(ES7)开始,版本发布变得更加频繁,每年发布一个新版本,好在每次版本的更新内容并不多,本文会细说这些新特性,尽可能和旧知识相关联,帮你迅速上手这些特性。
心莱科技雪雁
2019/12/11
2K0
ES7、ES8、ES9、ES10新特性大盘点
ECMAScript 2018(ES9) 的新特性总结
在async/await的某些时刻,我们可能尝试在同步循环中调用异步函数。例如下面两段代码:
江一铭
2022/06/16
9150
ECMAScript 2018(ES9) 的新特性总结
ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合
ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合新特性
痴心阿文
2022/11/18
3.6K0
ES6,ES7,ES8,ES9,ES10,ES11,ES12...JS语法汇总集合
ES6-11
Rest 参数与 spread 扩展运算符在es6中已经引入,但仅限于数组,es9中为对象提供了像数组一样的 rest 参数和扩展运算符
4O4
2022/04/25
2540
汇总JS语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
本文集合了 ES6 至 ES11 常用到的特性,包括还在规划的 ES12,只列举大概使用,详细介绍的话内容量将十分巨大~.~。PS:使用新特性需要使用最新版的 bable 就行转义
coder_koala
2021/03/12
2.6K0
汇总JS语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
详解 ES 2018 新特性~
第9版ECMAScript标准于2018年6月发布,正式名称为ECMAScript 2018(简称ES2018)。从ES2016开始,ECMAScript规范的新版本每年发布一次,而不是每隔几年发布一次,相应的,每版增加的功能也更少一些。最新版本的标准通过添加4个新的RegExp特性、rest/spread属性、异步迭代和Promise.prototype.finally来延续每年的发布周期。此外,ES2018取消了标记模板转义序列的语法限制。
苏南
2020/12/16
1.1K1
详解 ES 2018 新特性~
JavaScript中的ES7/ES8/ES9/ES10
自从前端开发流行起来,前端的各类技术如雨后春笋般出现,让人应接不暇,几年前还是jq一把梭,现在除了三大主流框架var,何种混合开发也接踵而至,还有可能取代JS的TS出现,我们要跟上时代的步伐,了解最新的技术,走在技术的前沿。
刘亦枫
2020/03/19
4.2K0
前端进阶必须知道的正则表达式知识
正则表达式(Regular Expression) 是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。
石燕平
2019/12/03
7790
从ES6到ES10的新特性万字大总结(不得不收藏)
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)在标准ECMA-262中定义的脚本语言规范。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
陈大鱼头
2020/04/16
2.4K0
webApis06-navigator、history、本地存储、线程、数组方法、正则表达式
navigator对象 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>薪资想过万,代码敲三遍</title> </head> <b
yuanshuai
2022/08/17
3350
【JS】380- JavaScript 正则新特性
如果你曾用 JavaScript 进行过复杂的文本处理操作,那么你将会喜欢 ES2018 中引入的新特性。本文将详细介绍第9版标准如何提高 JavaScript 的文本处理能力。
pingan8787
2019/10/15
1.1K0
【JS】380- JavaScript 正则新特性
【ES6+】007-ES6新特性:Set集合、Map集合、class类
ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:
訾博ZiBo
2025/01/06
3310
【ES6+】007-ES6新特性:Set集合、Map集合、class类
嘿,这些ES9的骚操作你还不知道吗?
所有整理的文章都收录到我《Cute-JavaScript》系列文章中,访问地址:http://js.pingan8787.com
ConardLi
2019/07/30
4470
JavaScript 又出新特性了?来看看这篇就明白了
https://juejin.im/post/5ca2e1935188254416288eb2
崔庆才
2019/05/06
1.6K0
ECMAScript 2018(ES9)新特性简介
ES9是ECMA协会在2018年6月发行的一个版本,因为是ECMAScript的第九个版本,所以也称为ES9.
程序那些事
2021/03/31
4480
ES6系列_4之扩展运算符和rest运算符
运算符可以很好的为我们解决参数和对象数组未知情况下的编程,让我们的代码更健壮和简洁。
wfaceboss
2019/04/08
5870
ES6系列_4之扩展运算符和rest运算符
厉害!这篇正则表达式竟写的如此详尽
厉害!这篇正则表达式竟写的如此详尽 https://www.zoo.team/article/regexp
政采云前端团队
2022/12/01
7950
厉害!这篇正则表达式竟写的如此详尽
推荐阅读
相关推荐
【ES6+】004-ES6新特性:ES6中函数参数的默认值、rest参数、扩展运算符
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验